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

275 阅读1分钟

问题

在使用 mysql -p3306 -uroot -p 登陆 或者 使用 mysql_secure_installation 进行安全配置时,均会报没有权限。

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

临时解决方案: 使用 sudo 才可以登陆和进行配置。

原因

由 auth_socket 插件引起的。简单来说这意味着当db_users使用数据库时,将会通过系统用户认证表进行认证

解决

禁用 auth_socket 插件

1.  Login to MySQL as root (sudo will bypass password prompt)

$ sudo mysql -u root

2.  Change to the mysql database and set the plugin to mysql_native_password for the root user.

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

参考

linuxnightly.com/error-1698-… blog.csdn.net/jlu16/artic…