2017-01-09 1 views
2

J'ai django.db.utils.OperationalError: (1698, "Access denied for user 'root'@'localhost'") lors de l'utilisation de mysql. Le nom d'utilisateur et pw sont corrects:MySQL: django.db.utils.OperationalError: (1698, "Accès refusé pour l'utilisateur 'root' @ 'localhost'") avec le nom d'utilisateur correct et pw

DB_HOST = '127.0.0.1' 
DB_USER = 'root' 
DB_PASSWORD = '' 

je peux connecter à MySQL en tant que root:

$ sudo mysql -u root 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 16 

Mais pas cchilders:

$ mysql -u root 
ERROR 1698 (28000): Access denied for user 'root'@'localhost' 

Cela peut contribuer au problème. La dernière fois que j'ai installé mysql cela ne s'est pas passé, donc ça n'a pas de sens pour moi. J'ai le client bien:

$ pip3 freeze 
Django==1.10.5 
mysqlclient==1.3.9 

Comment puis-je permettre à MySQL d'être exécuté par mon utilisateur normal, donc je peux courir django dans le terminal? merci

solution sale:

Sans corrections, exécutez toujours mysql comme sudo

+1

Je ne sais pas si cela est la bonne réponse, mais j'ai eu récemment le même problème et cela a fonctionné pour moi: http://askubuntu.com/questions/766334/cant-login-as-mysql -user-root-from-normal-utilisateur-account-in-ubuntu-16-04 –

+0

Celui-ci m'a aussi aidé: https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied- pour-user-rootlocalhost – vinzee

Répondre

1

La raison pour laquelle vous pouvez vous connecter en tant que root sur votre serveur est que vous avez probablement spécifié un mot de passe dans le fichier .my.cnf dans /root (c'est-à-dire, le répertoire personnel de l'utilisateur root). Vérifiez s'il y a un mot de passe et utilisez-le pour cchilders. Vous pouvez ensuite créer un utilisateur d'application spécifique à django pour vous assurer que l'application django lit/écrit/etc uniquement. aux bases de données auxquelles il a besoin d'accéder et de ne pas accéder via l'utilisateur mysql root.

create user [email protected] identified by 'django-user-password'; 
grant usage on *.* to [email protected]; 
grant all privileges on django-database-1 to [email protected]; 
1

Créer un utilisateur SQL non-root et changer la variable DB_USER dans le fichier settings.py de Django