我们在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.
根据您的确切配置,下面可能足以解决您的连接问题.
你可以使用–socket = / tmp / mysql.sock启动mysql
--socket=path,-S path
For connections to localhost,the Unix socket file to use,or,on Windows,the name of the named pipe to use.
为了在不让用户读取整个mysql配置的情况下存储该设置,您可以更改〜/ .my.cnf文件的设置
在您的情况下,您将socket = / tmp / mysql.sock添加到此文件.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。