我们在 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版本。
答案1
答案2
我刚刚查看了 Ubuntu 14.04 的全新安装,/etc/mysql 上的默认权限是 755。说实话,我不明白你为什么认为这是个问题。