这是一个非常基本的问题,但我正绞尽脑汁试图弄清楚这一点:
mysql> create database hellodb;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on hellodb to hellouser identified by '123';
Query OK, 0 rows affected (0.00 sec)
mat@admin:~$ mysql -u hellouser hellodb -p
Enter password:
ERROR 1045 (28000): Access denied for user 'hellouser'@'localhost' (using password: YES)
这是一个 Amazon EC2 实例,因此有些复杂。有一个内部 IP 地址和一个外部 IP 地址,MySQL 只能设置为监听其中一个。我选择了外部 IP 地址。但我认为这并不重要:上述命令应该有效,我已经尝试了我能想到的所有主机地址变体(localhost、内部 ip、外部 ip、fqdn、%)。
这是 Ubuntu Trusty,所以一切通常都能正常工作(与 Debian 及其“默认情况下为让您安心而设置”的设计策略相反)。
有什么方法可以调试这些“拒绝访问”错误消息吗? 有没有办法调试 MySQL 对密码、IP 地址、用户名或权限是否不满意?
有无数种可能的组合会导致此问题,谷歌搜索显示对此存在大量混乱。如果有某种方法可以找出实际原因,那将非常有帮助。
答案1
而不是这个声明
grant all privileges on hellodb to hellouser identified by '123';
尝试下面这个 ->
grant all privileges on hellodb.* to 'hellouser'@'localhost' identified by '123';