我用rpm包安装的mysql,默认数据目录为/var/lib/mysql,安装完成后,我将数据目录移到了/usr/local/mysql/data下数据库正常启动,本机用mysql客户端工具也没问题可是我写了个程序,调用mysql_real_connect连接DB时出错了,提示找不到/var/lib/mysql/mysql.sockmy.cnf中的mysql.sock的位置都已改到了/tmp/mysql.sock,也重启了DB用mysql_config查看,socket仍然是/var/lib/mysql/mysql.sock为什么?怎样才能完全的改掉/var/lib/mysql/mysql.sock到/tmp/mysql.sock
我在/var/lib/mysql/做了符号链接到/tmp/mysql.sock就可以了我知道在mysql_real_connect中可以指定socket,但是我不想这样
有没有什么办法?

解决方案 »

  1.   

    mysql_config看到的信息应该是安装时默认设置吧,你用ps ax|grep mysql应该可以看到mysql正在使用的socket在那里。
      

  2.   

    如果你真的要把mysql_config显示的信息改变的话,直接vim /usr/bin/mysql_config,修改里面的socket这个变量,大约在第94行。
      

  3.   

    本帖最后由 yueliangdao0608 于 2008-06-17 21:44:18 编辑
      

  4.   

    我并不太关心mysql_config显示成什么是想怎样我的程序可能用/tmp/mysql.sock连接,现在程序总去找/var/lib/mysql/mysql.sock啊
    mysqld进程如下:/usr/sbin/mysqld --basedir=/ --datadir=/usr/local/mysql/data --user=mysql --pid-file=/usr/local/mysql/data/RFSIM.pid --skip-external-locking --port=3306 --socket=/tmp/mysql.sock
      

  5.   

    1>如果你用的应用是C代码程序
    你把mysql_real_connect函数中的host连接串改成 localhost;mysql_socket=/tmp/mysql.sock 就可以了2>如果你的应用是PHP代码程序,修改 /etc/php5/apache2/php.ini[MYSQL] 
    mysql.default_port = 3306
    mysql.default_socket = /tmp/mysql.sock这样就OK了
      

  6.   

    一定要在程序中改吗,不可以通过修改MYSQL的什么配置来实现吗?谢谢!
      

  7.   

    虽然是挖坑,但希望能帮到后来人。
    你需要做的是改mysql的配置文件。一般是这个/etc/my.cnf,如果没有可以自己从源码包里拷一个过来cp support-files/my-medium.cnf /etc/my.cnf。
    关键是修改这个文件时要注意:一般人都只改了
    [mysqld]
    datadir=/tmp
    socket=/tmp/mysql.sock
    但还应该要改
    [client]
    socket=/tmp/mysql.sock
    。client这个字段千万别忘了,如果没有就自己加。不然就会出现楼主所遇到的情况。