
最近,很多人問 maradb 的密碼修改不了,用以前 set password 的 mysql 命令,報下面的錯誤
Column 'Password' is not updatable
為什么改不了呢,因為 mysql.user 表不見了,現(xiàn)在它只是 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 可以給用戶設置多種認證方式了,在初始安裝的時候,默認創(chuàng)建了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,只要登陸用戶有系統(tǒng)root權限就可以進去。
當然,如果你不想使用這個方式,還是想使用以前的密碼登陸,也是支持。
# 先登陸要修改的用戶
mysql -uroot
#改認證模式
update mysql.user set plugin = 'mysql_native_password' where user = 'root';
# 然后再
set password = password('123456')
這樣就把root的密碼改為了 123456