web-dev-qa-db-fra.com

erreur mysql: ERREUR 1018 (HY000): Impossible de lire le répertoire de '.' (errno: 13)

quand j'essaie de voir les bases de données dans mysql, j'obtiens cette erreur:

ERROR 1018 (HY000): Can't read dir of '.' (errno: 13)

Et cela empêche mon application d'afficher ...

Mon débogueur Django dit:

(2002, "Can't connect to local MySQL server through socket '/var/lib/mysql/my_database' (13)")

Voici mon fichier de paramètres:

DATABASES = {
'default': {
    'ENGINE': 'Django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'Oracle'.
    'NAME': 'my_database',                      # Or path to database file if using sqlite3.
    'USER': 'root',                      # Not used with sqlite3.
    'PASSWORD': '****',                  # Not used with sqlite3.
    'Host': '',                      # Set to empty string for localhost. Not used with sqlite3.
    'PORT': '3306',                      # Set to empty string for default. Not used with sqlite3.

Que peut causer le problème?

Merci d'avance

34
Tony Kyriakidis

Vous devez définir la propriété et les autorisations pour le répertoire:

chown -R mysql:mysql /var/lib/mysql/ #your mysql user may have different name
chmod -R 755 /var/lib/mysql/

Remarque: -R rend les commandes récursives. Vous pouvez les omettre s’il n’ya pas de sous-répertoires dans /var/lib/mysql/.

62
scriptin

Pour nous, utilisateurs d’OS X, cela devrait fonctionner:

Sudo chown -R mysql:mysql /usr/local/mysql/
Sudo chmod -R 755 /usr/local/mysql/

Edit: En fonction de la façon dont vous avez installé MySQL, votre kilométrage varie. J'ai installé à l'aide du programme d'installation de mysql community server dmg sur mysql.com

Si cela ne fonctionne pas, essayez d'exécuter which mysql pour voir où se trouve votre installation mysql, puis remplacez /usr/local/mysql/ dans la commande ci-dessus par tout ce qui se trouve avant le répertoire 'bin'. 

Par exemple, sur mon système, which mysql génère le résultat suivant: /usr/local/mysql/bin/mysql

donc mon chemin est /usr/local/mysql/

31
denodster
chown -R mysql:mysql /var/lib/mysql/

chmod -R 755 /var/lib/mysql/

Je peux confirmer que ces deux instructions chmod ont fonctionné pour moi (Webmin n'a pas vu les bases de données, ni n'a montré de tables), mais je ne sais pas pourquoi je devais le faire après l'installation d'environ deux douzaines de serveurs (Centos) avec MySQL dans ce dernières années.

1
mfs

Sur CentOS/RedHat, vous devriez faire la même chose sur un chemin différent: 

chown -R mysql:mysql /data/mysql/
chmod -R 755 /data/mysql/
1
Valentin Grégoire

osx High Sierra utilise la commande suivante pour résoudre le problème:

chown -R mysql:mysql /usr/local/mysql
0
Airful