ubuntu – / etc / mysql权限不允许非超级用户连接到套接字

前端之家收集整理的这篇文章主要介绍了ubuntu – / etc / mysql权限不允许非超级用户连接到套接字前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们在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

Mysql Manual

--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文件的设置

详见Option Files

在您的情况下,您将socket = / tmp / MysqL.sock添加到此文件.

猜你在找的Ubuntu相关文章