我们在Vagrant下运行ubuntu服务器13.10,并遇到了一个有趣的问题.
我们正在覆盖conf.d / my.cnf中的套接字位置
[client] port = 3306 socket = /tmp/MysqL.sock [MysqLd_safe] socket = /tmp/MysqL.sock [MysqLd] user = MysqL pid-file = /var/run/MysqLd/MysqL.pid socket = /tmp/MysqL.sock port = 3306 datadir = /var/lib/MysqL bind-address = 0.0.0.0
到现在为止还挺好.启动服务器,实际上有一个套接字在/ tmp中监听.
但是,只有超级用户才能访问它!
作为非超级用户,MysqL -u root -pXXXX会收到以下错误:
ERROR 2002 (HY000): Can't connect to local MysqL server through socket '/var/run/MysqLd/MysqLd.sock'
我们假设问题是我们的非特权用户无法访问conf文件以找到正确的套接字,事实上,将/ etc / MysqL上的权限更改为0755修复了这个问题,但它似乎不像正确的解决方案.
作为旁注,在12.04这个行为是相同的,但是当MysqL启动时,它在/ tmp创建套接字,但也在/ var / run / MysqLd下创建了一个符号链接,所以当客户端尝试时要连接,它会找到默认套接字.
在两台机器上,MysqL是版本5.5.37.