刚刚启用MariaDB时,默认root账号无密码就可以登录,需要设置密码。然而尝试一大圈修改密码的方法后,依旧可以无密码登录
一、碰过的壁,其中的三个
1.mysqladmin -u root password root无效
2.用mysql_secure_installation初始化密码也无效,太长没图
3.在mysql中用update user报错
查了又一大圈后才得知,原因是MariaDB-10.4版本开始,mysql.user不再是一张表而是一个视图,但同时也提供了一个新表mysql.global_priv来替代mysql.user,这就提供了解决问题的思路
二、解决方法
在mysql里输入以下命令,查看mysql.global_priv
use mysql;
select * from global_priv;
红框圈出来的是root的模式,因为我之前改过了显示"mysql_native_password",没改之前显示"unix_socket",也就是默认情况下,root用户通过"unix_socket"身份验证插件进行身份验证。需要将此模式改为"mysql_native_password"
输入代码:
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password;
ALTER USER `root`@`localhost` IDENTIFIED BY 'root';
成功将root用户密码改为"root",之后登陆的时候就需要密码啦