MariaDB 接受任何密码

MariaDB 接受任何密码

在 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 |
+------+

好的,root 已经存在了。现在更改其密码:

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

有效吗?

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

设置密码没问题,但为什么 MariaDB 接受任意随机密码,甚至是空密码?

此安装不接受 ALTER USER 语句。

答案1

答案: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] root 的密码。

感谢 jesse-b 和 derobert 的深入讨论和回答。

答案2

还要检查您的 my.cnf 是否有“skip-grant-tables”,如果有,请将其删除。

相关内容