MySQL:django.db.utils.OperationalError:(1698,“访问被拒绝用户'root'@'localhost'”)具有正确的用户名和pw

时间:2017-01-09 06:18:48

标签: python mysql django python-3.x django-settings

使用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了?谢谢

肮脏的解决方案:

没有任何修复,请始终将mysql作为sudo

运行

3 个答案:

答案 0 :(得分:2)

您可以在服务器上以root身份登录的原因是您可能在.my.cnf的{​​{1}}文件中指定了密码(即/root用户& #39; s主目录)。检查一下是否有密码,并将其用于root。然后,您可以创建一个django特定的应用程序用户,以确保django应用程序只读/写/等。到需要访问的数据库,而不是通过cchilders mysql用户访问。

root

答案 1 :(得分:1)

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

答案 2 :(得分:0)

    $ sudo mysql -u root # I had to use "sudo" since is new installation

    mysql> USE mysql;
    mysql> SELECT User, Host, plugin FROM mysql.user;

    As we can see in the query, the root user is using the auth_socket plugin

    There are 2 ways to solve this:

    1) You can set the root user to use the mysql_native_password plugin
    2) shown in above post

    option 1:
    mysql> USE mysql;
    mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
    mysql> FLUSH PRIVILEGES;
    mysql> exit;

    option 2:
seen in the above post