MySQL: django.db.utils.OperationalError: (1698, "Access denied for user 'root'@'localhost'"),即使用户名和密码正确

6

在使用mysql时,我遇到了django.db.utils.OperationalError: (1698, "Access denied for user 'root'@'localhost'")错误。用户名和密码是正确的:

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

我可以使用root账户登录mysql:

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

但不是像 cchilders 那样:

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

这可能是问题的原因。上次我安装MySQL时没有发生这种情况,所以对我来说这没有意义。我的客户端没问题:
$ pip3 freeze
Django==1.10.5
mysqlclient==1.3.9

如何允许我的普通用户运行mysql,以便我可以在终端中运行django?谢谢。

不太优雅的解决方案:

如果没有任何修复措施,请始终使用sudo运行mysql。


1
我不确定这是否是正确的答案,但最近我遇到了同样的问题,这个链接对我有用:http://askubuntu.com/questions/766334/cant-login-as-mysql-user-root-from-normal-user-account-in-ubuntu-16-04 - Matthias Gilch
这个也帮了我:https://dev59.com/6lkS5IYBdhLWcg3w8aUL - vvvvv
2个回答

14

你之所以可以在服务器上使用root账户登录,可能是因为你在/root(即root用户的家目录)的.my.cnf文件中指定了密码。检查一下是否在那里设置了密码,并将其用于cchilders账户。然后,你可以创建一个Django特定的应用程序用户,以确保Django应用程序仅对它需要访问的数据库进行读/写等操作,而不通过root MySQL用户进行访问。

create user 'django'@'localhost' identified by 'django-user-password';
grant usage on *.* to 'django'@'localhost';
grant all privileges on django-database-1.* to 'django'@'localhost';

3

创建一个非root SQL用户,并在Django的settings.py文件中更改DB_USER变量


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接