MySQL ERROR 1045(28000)。用户'bill'@'localhost'的访问被拒绝(使用密码:YES)
首先让我提一下,我已经看了很多建议的问题,但没有找到相关的答案。以下是我正在做的事情。
我连接到我的亚马逊EC2实例。我可以用这个命令以MySQL根目录登录。
mysql -u root -p
然后我创建了一个新的用户账单,主机为%。
CREATE USER 'bill'@'%' IDENTIFIED BY 'passpass';
给予用户bill所有的权限。
grant all privileges on *.* to 'bill'@'%' with grant option;
然后我从根用户退出,尝试用bill登录。
mysql -u bill -p
输入正确的密码,得到了这个错误。
ERROR 1045(28000)。用户'bill'@'localhost'(使用密码:YES)的访问被拒绝。
397
3
当你运行
并得到了这个错误
mysqld希望你以
bill@localhost
的身份连接。试着创建
bill@localhost
。如果你想远程连接,你必须指定DNS名称、公共IP或使用TCP/IP的127.0.0.1。
登录后,请运行以下程序
USER() 报告你是如何尝试在MySQL中进行认证的
CURRENT_USER() 报告你是如何被允许从mysql.user表中进行MySQL认证的
这将使你更好地了解如何以及为什么你被允许登录到mysql。为什么这个视图很重要?它与用户认证订购协议有关。
这里有一个例子。我将在我的桌面上创建一个匿名用户,MySQL
OK看我以匿名用户身份登录。
认证排序是非常严格的。它从最具体的到最不具体的进行检查。我在DBA StackExchange中写过关于这种认证方式的文章。
必要时,不要忘记明确调用TCP作为mysql客户端的协议。
当你输入 "mysql -u root -p "时,你正在通过本地unix套接字连接到mysql服务器。
然而,你给的授权,
'bill'@'%'
只匹配TCP/IP连接,这很奇怪。如果你想授予本地unix套接字的访问权,你需要授予'bill'@'localhost'的权限,奇怪的是,这与'bill'@'127.0.0.1'不同。
你也可以使用TCP/IP与mysql命令行客户端连接,以配合你已经授予的权限,例如,运行
mysql -u root -p -h 192.168.1.123
或你的盒子有的任何本地IP地址。好吧,我不确定,但可能这就是mysql安装目录下的my.cnf文件,是罪魁祸首。 注释掉这一行,问题可能就解决了。