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

问题

在ubuntu19.04上安装的一个小坑。使用

apt install mysql-server -y

安装过程中没有出现所谓的设置密码。也就是root密码为空的状态。使用普通用户登陆报如下错误。

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

本来以为密码没配好,或者是权限没给的原因,网上找了一些文章,并没有奏效。还有一个现象就是我如果以root用户登陆或者

sudo mysql -u root -p

无需输入密码可直接登陆数据库。很迷。最后看到网上老哥的一个帖子,互相参考,原帖在这

解决

果然我看到user表的plugins字段,root与其他的用户不一样。

mysql> select user, plugin from user;
+------------------+-----------------------+
| user             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.session    | mysql_native_password |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

修改字段

update user set authentication_string=password("xxxx"),plugin='mysql_native_password' where user='root';

即可成功登陆。

也算mysql的一种安全机制吧,该插件只检查用户是否使用UNIX套接字进行连接,然后比较用户名。这也解释了为啥我用root是无需密码登陆的。

你可能感兴趣的:(运维)