使用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
答案 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