MySQL 允许无需密码进入

MySQL 允许无需密码进入

我已经将我的 MySQL 数据库配置为要求所有用户都输入密码,甚至是机器本身的 root 用户。

现在我发现我的数据库中有空的用户

重现:mysql -u root -p然后use mysql;&select * from user;

它给了我2个条目,一个包含“localhost”和用户<empty>,另一个包含机器的主机名和<empty>。

现在我尝试使用 访问该帐户mysql -u ' '(是的,这是正确的,在 ' 之间留一个空格),并且我无需密码即可登录。用户“只能”看到 information_schema 和 test,这是默认创建的两个数据库。他无权访问 mysql 或任何其他自定义创建的数据库。

我已经将此用户的密码更改为我不会告诉你的内容

mysql -u root -p
use mysql;
UPDATE mysql.user SET Password=PASSWORD('thisisasecretpassword') WHERE USER='root';
FLUSH PRIVILEGES;

现在我的问题是:

  • 是否有任何 MySQL 服务器容易受到此条目的攻击?

  • 攻击者能否突破​​该帐户或两个默认数据库?

  • 我应该用密码保护这些用户吗?或者我可以删除它们吗?它们是 MySQL 内部某些东西所必需的吗?

答案1

这些是匿名用户,因此不需要密码。所有安装都会默认创建这些密码。我不确定为什么要这样做。

您可以为它们设置密码或将其删除。从https://dev.mysql.com/doc/refman/5.6/en/default-privileges.html

如果您想阻止客户端以没有密码的匿名用户身份进行连接,您应该为每个匿名帐户分配一个密码,或者删除这些帐户。

似乎是这个的重复:MySQL 5.5.16 允许匿名连接

答案2

用于mysql_secure_installation删除匿名用户、测试数据库以及防止使用root用户进行远程连接。

http://dev.mysql.com/doc/refman/5.0/en/mysql-secure-installation.html

相关内容