MySQL允许没有密码的input

我已经configuration我的MySQL数据库要求在所有用户上的密码,甚至根机器本身。

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

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

它给了我两个条目,一个用“localhost”和user <empty>,一个用机器的主机名和<empty>。

现在我试着用mysql -u ' '来访问这个帐户(是的,这是正确的,在'东西之间留下一个空间),我没有密码login。 用户只能“看”information_schema和testing,默认情况下创build的两个数据库。 他没有访问MySQL或任何其他自定义创build的数据库。

我已经把这个用户的密码改成了我不会告诉你的东西

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

现在我的问题:

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

  • 攻击者能否打破这个帐户或两个默认数据库?

  • 我应该密码保护这些用户还是我可以删除它们? 他们是否需要一些MySQL内部的东西?

这些是匿名用户,因此不需要密码。 它们是在所有安装中默认创build的。 我不确定为什么这样做。

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

如果要防止客户端以匿名用户的身份连接,则应该为每个匿名帐户分配一个密码,否则请删除这些帐户。

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

使用mysql_secure_installation删除匿名用户,testing数据库,并防止使用root用户进行远程连接。

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