Linux

‘/var/lib/mysql/mysql.sock’ (13 ‘Permission denied’) 以非 mysql 使用者身份訪問套接字時

  • August 30, 2019

我正在嘗試連接到我用於開發的本地 mysql 伺服器

伺服器啟動正常,但我無法以非 root 使用者身份連接到它。

[root@somepc ]# mysql -u [someuser] -p[somepass]
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13 "Permission denied")

作為 root,這可以按預期工作。這樣該使用者確實有權訪問mysql。

mysql -u [user] -p[password]
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.30-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

當我檢查作為我的使用者的權限時

stat /var/lib/mysql/mysql.sock
stat: cannot stat '/var/lib/mysql/mysql.sock': Permission denied

對於非 root 使用者,這些權限應該是什麼?

該問題與套接字文件的權限錯誤有關

namei -l /var/lib/mysql/mysql.sock                                                                                                                                               Wed 07 Feb 2018 12:53:54 SAST
f: /var/lib/mysql/mysql.sock
drwxr-xr-x root  root  /
drwxr-xr-x root  root  var
drwxr-xr-x root  root  lib
drwx------ mysql mysql mysql
                      mysql.sock - No such file or directory

作為 root 我可以看到套接字文件的權限是

ll /var/lib/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 07.02.2018 12:42 /var/lib/mysql/mysql.sock=

所以問題是mysql的目錄,如上所示。

drwx------ mysql mysql mysql

我通過讓每個人訪問來解決這個問題。因為這是我用於開發的本地機器。

sudo chmod go+rx /var/lib/mysql/

在生產機器上,我會考慮 mysql 組的正確使用者。

sudo chmod g+rx /var/lib/mysql/

grep mysql /etc/group
mysql:x:89:[someusers]

請使用常識並在[]上述內容之間替換您需要的任何內容

現在可以按預期工作

mysql -u [user] -p[password]
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.30-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

引用自:https://serverfault.com/questions/896071