显然,我可以连接到MySQL(至less从我的本地主机),而不必提供任何用户名或密码。 我甚至可以把任何东西作为用户名,只要密码是空的。 我有权访问information_schema和test数据库。 我可以创build表格。 如果我运行SELECT USER()它将返回正确的值randomstring @ localhost,其中随机string是我连接时使用的用户名。
mysql.user表包含root @ localhost,root @ 127.0.0.1,@localhost和pma @ localhost。 我手动设置encryption密码到所有logging( UPDATE user SET password=... ),只有root拥有任何权限,另外两个logging对所有权限都有“N”。 用空的用户名logging看起来可疑,但我不认为这与这个有什么关系,我认为这是从一开始。
更糟的是,如果我添加一个用户的密码,我只能使用空string作为密码连接(就像我把任何东西作为用户名)。 如果我尝试连接使用我创build的用户名和我创build时提供的密码( CREATE USER .. IDENTIFIED BY .. )它不起作用。
有谁知道什么是错的,我该如何解决这个问题?
注意:我正在使用XAMPP软件包提供的Windows 5.5.16。
你只需要删除匿名用户。
将来,运行/ usr / bin / mysql_secure_installation(RPM安装中的位置)将提示您删除这些匿名用户。
默认情况下,MySQL安装有一个匿名用户,允许任何人login到MySQL,而不必为他们创build一个用户帐户。 这仅用于testing,并使安装变得更顺畅。 在进入生产环境之前,您应该删除它们。
删除匿名用户? [Y / N] Y …成功!
用空的用户名删除用户条目。 这是事业。 使用select user(); login时validation它是否是您login的用户。
看到这里 :
有些帐户是匿名用户。 这些用户名是空的。 匿名帐户没有密码,所以任何人都可以使用它们连接到MySQL服务器。