问题
在使用 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;