Password

MariaDB 接受任何密碼

  • February 6, 2021

在 Debian 9.1 上執行 MariaDB 10.1.23-MariaDB-9+deb9u1。全新作業系統安裝,安裝 MariaDBapt-get install mariadb-server mariadb-client

顯然 MariaDB 在安裝時不會要求輸入 root 密碼,所以我將在事後設置它:

# mysql -uroot
> select user from mysql.user;
+------+
| user |
+------+
| root |
+------+

好的,所以根存在。現在更改其密碼:

> set password for 'root'@'localhost' = PASSWORD('P@ssw0rd');
> flush privileges;
> exit

它奏效了嗎?

# mysql -uroot -pblabla
MariaDB [(none)]>

設置密碼沒問題,但為什麼 MariaDB 接受任何隨機密碼,甚至是空密碼?

此安裝不接受 ALTER USER 語句。

答案:https ://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/ :

顯然 16.04 上的 mysql-server 安裝(或任何 5.7 安裝?)允許 root 訪問不是通過密碼,而是通過 auth_socket 外掛。執行 sudo mysql -u root (nb w/oa 密碼) 將為您提供 mysql 控制台,而以非 root 身份執行該命令會提示您輸入密碼。

似乎更改密碼並沒有太大區別,因為身份驗證後端甚至不檢查密碼。

要禁用此 auth_socket 外掛,請在 mysql 提示符下執行

update mysql.user set plugin=null where user='root';
flush privileges;

這使得 MariaDB 也要求輸入密碼

$$ Linux $$根。 感謝 jesse-b 和 derobert 的深入討論和您的回答。

引用自:https://unix.stackexchange.com/questions/385202