MySQL在连接错误消息中使用空用户名

时间:2015-09-08 10:03:24

标签: mysql

我发现了一个奇怪的mysql行为,我正在努力解释

array[317]

它使用空字符串''作为错误消息中的用户名,即使我明确提供了 root12 。如果我提供正确的用户名,它连接没有问题,所以我怀疑它只是mysql报告错误的方式。

这是一个错误还是未记录的功能?

[vagrant@Subs ~]$ mysql -u root12 subdb
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'subdb'

修改

人们似乎对这个问题的措辞感到困惑。我使用root12作为用户名,而不是密码。我也说mysql没有 root12 的密码。此外,root12用户甚至不存在。所以这是一个明确的身份验证失败。我的问题是为什么说

[vagrant@Subs ~]$ mysql --version
mysql  Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1

它说

ERROR 1044 (42000): Access denied for user 'root12'@'localhost' to database 'subdb'

修改

在这里运行CentOS6.5,mysql 5.1.73。 testuser 用户最初不存在

ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'subdb'

从这个输出中可以清楚地看到MySQL(似乎只有这个版本)泄漏了用户名是否存在的信息。如果它不存在,则错误消息将用户名重置为空字符串。如果是这样,mysql保持用户名不变

1 个答案:

答案 0 :(得分:0)

按以下方式尝试 -

mysql -u root12 -p

它会询问您密码,您需要提供root12密码。

但如果root12是root用户的密码,则使用以下命令 -

mysql -u root -proot12