![无法远程连接到 ubuntu 服务器上的 mysql](https://linux22.com/image/725363/%E6%97%A0%E6%B3%95%E8%BF%9C%E7%A8%8B%E8%BF%9E%E6%8E%A5%E5%88%B0%20ubuntu%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%20mysql.png)
我有一台 Apache2 ubuntu AWS EC2 服务器,我刚刚在其上安装了 mysql。
但是我似乎无法通过 mysql workbench 远程连接到数据库。
我想知道我错过了什么步骤才能通过 mysql workbench 远程访问 mysql
我收到以下错误:错误 1045(28000):拒绝用户“root”@“localhost”访问(使用密码:否)
好的,现在我可以通过 ssh 连接到 ssh,但仍然无法通过我的 mysql 工作台连接
在 ssh 中连接到 mysql 后,我运行以下命令,这是我在 mysql 工作台中使用的凭据。当然,我有一个真正的密码,而不是 ***** 作为密码
CREATE USER 'mysqladmin'@'localhost' IDENTIFIED BY '******';
授予所有权限。至‘mysqladmin’@‘localhost’,带授予选项;
答案1
在 MySQL 中,本地用户和远程用户被视为单独的帐户。因此,除了(对于本地访问):
CREATE USER 'mysqladmin'@'localhost' IDENTIFIED BY '******';
您还需要执行以下操作(以允许从任何地方进行远程访问):
CREATE USER 'mysqladmin'@'%' IDENTIFIED BY '******';
或者交替(仅允许从特定 IP 地址进行远程访问):
CREATE USER 'mysqladmin'@'TheIPAddress' IDENTIFIED BY '******';
您还需要向这些额外的用户帐户授予权限。
祝你好运!
答案2
如果出现以下情况,Mysql 将接受远程连接:
- 凭证正确(用户名+密码+主机名)并且;
- 如果 mysql 正在监听您正在连接的 ip。
因此你需要将其替换localhost
为你的 IP 或者通配符%
,例如:
CREATE USER 'remote'@'1.2.3.4' IDENTIFIED BY 'xxxxxx';
然后,你需要告诉 mysql '监听'你服务器的公共 IP,方法是打开/etc/mysql/my.cnf
并将行更改为bind-address=4.3.2.1
。确保在这里使用你服务器的公共 IP,然后重新启动 mysql(本地连接localhost
或127.0.0.1
保持运行)。
最后但并非最不重要的一点是,我真的建议实施某种防火墙,因为当您的 mysql 绑定到服务器的公共 IP 时,它很容易受到远程暴力攻击。我个人使用 iptables 来实现这一点:
iptables -A INPUT -p tcp --dport 3306 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP
第一行接受来自您的 IP 的端口 3306 上的连接,第二行阻止对端口 3306 的所有其他请求。