Password
MariaDB 接受任何密碼
在 Debian 9.1 上執行 MariaDB 10.1.23-MariaDB-9+deb9u1。全新作業系統安裝,安裝 MariaDB
apt-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 的深入討論和您的回答。