最近,很多人问 maradb 的密码修改不了,用以前 set password 的 mysql 命令,报下面的错误
Column 'Password' is not updatable
为什么改不了呢,因为 mysql.user
表不见了,现在它只是 mysql.global_priv
表的一个视图,所以不能修改原来的 mysql.user 表了,而密码是更改为在 authentication_string
字段中存放。
当然,如果你认为将修改密码的语句改为下面语句也是不好使的
UPDATE mysql.user SET authentication_string = PASSWORD('123456') WHERE User = 'root';
# 会报一个大大的错给你
ERROR 1348 (HY000): Column 'authentication_string' is not updatable
这是因为 mariadb 10.4
可以给用户设置多种认证方式了,在初始安装的时候,默认创建了2个默认账号: root,mysql,并默认使用unix_socket
模式认证 ,这种模式 root 不需要密码, 也不需要你去设置初始密码。
MariaDB [(none)]> select user,plugin from mysql.user limit 1;
+------+-----------------------+
| User | plugin |
+------+-----------------------+
| root | unix_socket |
+------+-----------------------+
这样登录 mysql 你就不需要像以前一样 mysql -uroot -p
, 而是直接 mysql
,只要登陆用户有系统root权限就可以进去。
当然,如果你不想使用这个方式,还是想使用以前的密码登陆,也是支持。
# 先登陆要修改的用户
mysql -uroot
#改认证模式
update mysql.user set plugin = 'mysql_native_password' where user = 'root';
# 然后再
set password = password('123456')
这样就把root的密码改为了 123456
网友评论