Linux
‘/var/lib/mysql/mysql.sock’ (13 ‘Permission denied’) 以非 mysql 使用者身份訪問套接字時
我正在嘗試連接到我用於開發的本地 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.