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和你修改过后的用户名不一致。

修改后即可。

希望对你有所帮助。

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

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值