1 votes

'/var/lib/mysql/mysql.sock' (13 "Permission denied") lors de l'accès au socket en tant qu'utilisateur non mysql

Je suis en train d'essayer de me connecter au serveur mysql local que j'utilise pour le développement

Le serveur démarre correctement, mais je ne peux pas m'y connecter en tant qu'utilisateur non-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")

En tant que root, cela fonctionne comme prévu. Donc cet utilisateur a les permissions pour accéder à 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.

Quand je vérifie les permissions en tant qu'utilisateur

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

Quelles devraient être ces permissions pour un utilisateur non-root?

2voto

nelaaro Points 564

Le problème était lié à l'erreur des autorisations sur le fichier de socket

namei -l /var/lib/mysql/mysql.sock                                                                                                                                               Mer 07 Fév 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 - Aucun fichier ou dossier de ce type

En tant que root, je peux voir que les autorisations sur le fichier de socket sont

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

Le problème est donc le répertoire pour mysql comme on peut le voir ci-dessus.

drwx------ mysql mysql mysql

J'ai résolu cela en donnant un accès à tout le monde. Comme il s'agit de ma machine locale utilisée pour le développement.

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

Sur une machine de production, je considérerais les utilisateurs corrects pour le groupe mysql.

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

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

Veuillez utiliser votre bon sens et remplacer tout ce dont vous avez besoin entre les [] ci-dessus

Cela fonctionne désormais comme prévu

mysql -u [user] -p[password]
Bienvenue dans le moniteur MariaDB. Tapez 'help;' ou '\h' pour obtenir de l'aide. Tapez '\c' pour effacer l'instruction actuelle.

0voto

nelaaro Points 564

Une autre solution à ce problème était de ne pas utiliser le socket lors de la connexion.

mysql -u [aaron] -p[aarw] -h 127.0.0.1
Bienvenue dans le moniteur MariaDB. Les commandes se terminent par ; ou \g.
Votre identifiant de connexion MariaDB est 2
Version du serveur: 10.1.30-MariaDB Serveur MariaDB

Droits d'auteur (c) 2000, 2017, Oracle, MariaDB Corporation Ab et autres.

Tapez 'help;' ou '\h' pour obtenir de l'aide. Tapez '\c' pour effacer l'instruction actuelle.

Votre utilisateur devrait avoir les autorisations nécessaires pour se connecter au serveur. L'un ou l'autre de ces exemples pourraient fonctionner.

-- Autorisations pour '[nom d'utilisateur]'@'localhost'
GRANT ALL PRIVILEGES ON *.* TO '[nom d'utilisateur]'@'localhost' IDENTIFIED BY PASSWORD '*somehash' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `%`.* TO '[nom d'utilisateur]'@'localhost' WITH GRANT OPTION;

Vous devez comprendre les implications en matière de sécurité avant de l'exécuter. Autoriser toutes les machines à se connecter, y compris depuis n'importe où sur internet.

-- Autorisations pour '[nom d'utilisateur]'@'%'
GRANT ALL PRIVILEGES ON *.* TO '[nom d'utilisateur]'@'%' IDENTIFIED BY PASSWORD '*somehash' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `%`.* TO '[nom d'utilisateur]'@'%' WITH GRANT OPTION;

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X