修改了mysql.sock的位置,如何在程序连接时指定修改后的mysql.sock

笑天居士 2008-06-17 03:01:24
我用rpm包安装的mysql,默认数据目录为/var/lib/mysql,安装完成后,我将数据目录移到了/usr/local/mysql/data下

数据库正常启动,本机用mysql客户端工具也没问题

可是我写了个程序,调用mysql_real_connect连接DB时出错了,提示找不到/var/lib/mysql/mysql.sock

my.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,但是我不想这样


有没有什么办法?

...全文
2937 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nybornhawk 2011-12-30
  • 打赏
  • 举报
回复
虽然是挖坑,但希望能帮到后来人。
你需要做的是改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这个字段千万别忘了,如果没有就自己加。不然就会出现楼主所遇到的情况。
笑天居士 2008-07-01
  • 打赏
  • 举报
回复
一定要在程序中改吗,不可以通过修改MYSQL的什么配置来实现吗?谢谢!
apache6 2008-06-24
  • 打赏
  • 举报
回复
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了
笑天居士 2008-06-18
  • 打赏
  • 举报
回复
我并不太关心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
懒得去死 2008-06-17
  • 打赏
  • 举报
回复
显示指定SOCKET就可以了。
hy2003fly 2008-06-17
  • 打赏
  • 举报
回复
如果你真的要把mysql_config显示的信息改变的话,直接vim /usr/bin/mysql_config,修改里面的socket这个变量,大约在第94行。
hy2003fly 2008-06-17
  • 打赏
  • 举报
回复
mysql_config看到的信息应该是安装时默认设置吧,你用ps ax|grep mysql应该可以看到mysql正在使用的socket在那里。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧