16.04Ubuntu操作mysql时出现ERROR 1698 (28000): Access denied for user 'root'@'localhost'

安装好mysql后:

使用mysql -u -root -p 登陆时报错:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

解决方法如下:(ps如果之前已经使用别的解决方法,没有根本解决问题,而是换了报错方式,建议sudo apt-get install package --reinstall (package t替换成 mysql-server 和mysql-client)重新安装包,重装mysql) 然后在按照下面步骤解决问题。
使用sudo登陆

sudo mysql -u root -p

到此,mysql数据库可以登陆。

但是在往后的使用中依然会报错:

比如:在使用python中django框架

运行生成迁移文件指令:

python manage.py makemigrations

依然会报错

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

这时真的很头疼于是乎我寻找各种解决方案:

 

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

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

+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

在表中你可以看到  root 用户 对应 auth_socket

我的解决方法是(在mysql中进行如下操作):

替换YOUR_SYSTEM_USER 为你的用户名

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

mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

 之后你需要使用mysql -u YOUR_SYSTEM_USER登陆mysql

之后如果在生成迁移文件的时候又会报错:

django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")

说明你django中的设置文件的用户名root和你修改过后的用户名不一致。

16.04Ubuntu操作mysql时出现ERROR 1698 (28000): Access denied for user 'root'@'localhost'_第1张图片

修改后即可。

希望对你有所帮助。

附上英语原文参考链接https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(16.04Ubuntu操作mysql时出现ERROR 1698 (28000): Access denied for user 'root'@'localhost')