Назад | Перейти на главную страницу

'/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.

Еще одно решение этой проблемы - не использовать розетку при подключении.

mysql -u [aaron] -p[aarw] -h 127.0.0.1
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.

У вашего пользователя должны быть правильные гранты для подключения к серверу. Любой из них может работать.

-- Grants for '[username]'@'localhost'
GRANT ALL PRIVILEGES ON *.* TO '[username]'@'localhost' IDENTIFIED BY PASSWORD '*somehash' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `%`.* TO '[username]'@'localhost' WITH GRANT OPTION;

Вам необходимо понять последствия для безопасности того, что это делает, прежде чем запускать его. Разрешить всем хостам подключаться, включая любое место в Интернете.

-- Grants for '[username]'@'%'
GRANT ALL PRIVILEGES ON *.* TO '[username]'@'%' IDENTIFIED BY PASSWORD '*somehash' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `%`.* TO '[username]'@'%' WITH GRANT OPTION;