无法远程连接到 ubuntu 服务器上的 mysql

无法远程连接到 ubuntu 服务器上的 mysql

我有一台 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 将接受远程连接:

  1. 凭证正确(用户名+密码+主机名)并且;
  2. 如果 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(本地连接localhost127.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 的所有其他请求。

相关内容