'/var/lib/mysql/mysql.sock' (13 “Permission denied”) ao acessar o socket como usuário não-mysql

1

Estou tentando conectar-me ao servidor mysql local que utilizo para desenvolvimento

O servidor inicia bem, mas não consigo me conectar a ele como um usuário não-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")

Como root, isso funciona como esperado. Então esse usuário tem permissões para acessar o 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.

Quando eu verifico a permissão de como meu usuário

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

O que deve ser essa permissão para um usuário não-root?

    
por nelaaro 07.02.2018 / 12:18

2 respostas

0

O problema estava relacionado ao erro nas permissões no arquivo de soquete

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

Como root, posso ver que as permissões no arquivo de soquete são

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

Portanto, o problema é o diretório para o mysql, como pode ser visto acima.

drwx------ mysql mysql mysql

Eu consertei isso dando acesso a todos. Como esta é minha máquina local usada para desenvolvimento.

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

Em uma máquina de produção, eu consideraria os usuários corretos para o grupo mysql.

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

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

Use o bom senso e substitua o que precisar entre o [] acima

Isso agora funciona como esperado

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.
    
por 07.02.2018 / 12:18
0

Outra solução para este problema foi não usar o soquete durante a conexão.

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.

Seu usuário precisaria ter as concessões corretas para se conectar ao servidor. Qualquer um desses poderia funcionar.

-- 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;

Você precisa entender as implicações de segurança do que isso faz antes de executá-lo. Permitir que todos os hosts se conectem, inclua em qualquer lugar na internet.

-- 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;
    
por 07.02.2018 / 12:23