MySQL 不允许用户从远程机器连接:-By
默认的 MySql 通过管理员访问创建 root 用户 id
Id 的访问仅限于 localhost,这意味着 root 用户
如果您尝试访问 MySql,使用正确密码的 id 将无法工作
要解决这个问题,你需要
允许 root 用户或其他 DB 用户从远程访问 MySQL
我不建议允许 root 用户 id 访问 DB
您可以使用通配符% 来指定任何远程计算机。
我正在经历这个问题,并且我已经确定我的问题实际上不是 EC2实例。看起来像是 MySQL 客户端驱动程序软件中的一个 bug。我还没有做过彻底的研究,但是我已经在 EC2实例上安装了 MySQL Workbench,而且 IT 也是不稳定的——它间歇性地无法连接(错误是“连接被取消”)。这个链接表明在堆栈下方可能存在一个 bug,而不是 EC2。
$EC2prompt> mysql -u root -p
[...omitted output...]
mysql> CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'your_strong_password';
mysql> GRANT ALL PRIVILEGES ON 'mydb'.* TO 'myuser'@'localhost';`
Here's the key step, without which my local address was refused when attempting a remote connection (ERROR 1130 (HY000): Host '*.*.*.23' is not allowed to connect to this MySQL server):
mysql> GRANT ALL PRIVILEGES ON 'mydb'.* TO 'myuser'@'*.*.*.23';
mysql> FLUSH PRIVILEGES;`
(将 '*.*.*.23'替换为本地 IP 地址)
另外,我退出 mysql 到 shell 并重新启动 msyql 服务器:
$EC2prompt> sudo service mysql restart
在这些步骤之后,我可以很高兴地从我的电脑连接到:
$localprompt> mysql -h myinstancename.amazonaws.com -P 3306 -u myuser -p
CREATE USER 'jerry'@'localhost' IDENTIFIED BY 'jerrypassword';
CREATE USER 'jerry'@'%' IDENTIFIED BY 'jerrypassword';
GRANT ALL PRIVILEGES ON *.* to jerry@localhost IDENTIFIED BY 'jerrypassword' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* to jerry@'%' IDENTIFIED BY 'jerrypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
之后,可以通过输入实例的 public dns/ip 作为 MySQL Host Address,用户名作为 jerry,密码作为 jerryypassword 来远程访问 MySQL dB。(端口设置为默认为3306)