AWS ECS SSH Mysql远程访问

AWS ECS SSH Mysql远程访问

我有一个 aws ec2 ubuntu,apache 服务器设置了 mysql。我的问题是我能够通过命令行连接到 mysql。但是,如果我尝试使用 Mysql Workbench 或类似的程序连接到数据库,我可以登录到服务器并查看所有数据库和表,但无法运行任何选择查询或对数据库执行除查看之外的任何操作。

我尝试做过

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345';

但是它似乎没有解决问题?我收到一条错误消息

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

我确认已将 bind-address 设置为 0.0.0.0 。当我在命令行上查看用户表时,我确实看到了用户 root 的一行,其中列出了主机 %。

答案1

您一定不能将 MySQL 端口开放到互联网,这太不安全了。更多信息可以在这里找到https://security.stackexchange.com/questions/63881/is-it-not-safe-to-open-mysqls-port-to-the-internet

最受欢迎的方式是在 MySQL 上运行一个应用程序,它处理用于数据访问的用户界面/API。

如果确实需要远程 SQL 访问数据库,则应该使用 SSH 隧道来实现。https://dev.mysql.com/doc/workbench/en/wb-mysql-connections-methods-ssh.html显示相关说明。

您的数据库密码也应该始终是安全的。

答案2

只需使用 SSH 隧道。ssh -L3307:localhost:3306 ec2-user@your_ec2_host;然后将您的 Mysql Workbench 指向localhost:3307。注意:这些是两个不同的 localhost's; 第一个是指your_ec2_host从它自己的角度,第二个是指你的开发机器,你ssh来自哪里。

现在,我知道你已经听过这句话 500 遍了;再听一遍。

我已将绑定地址设置为 0.0.0.0

— 不要这样做。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345';

也不要这样做。创建一个单独的用户,并授予它最低所需的权限。

我可以登录到服务器并查看所有数据库和表,但不能运行任何选择查询或对数据库执行除查看之外的任何操作。

出现这种情况的原因可能是您的 mysqld 有另一个用户,root@localhost,仅具有访问 DB 模式的权限,仅此而已。对于 MySQL 来说,这是不同的用户;此外,获胜的GRANT规则是 — 因为前者比后者 %-wildcard 更具体。root@localhostroot@'%'

您应该知道这一点 — 如果您没有作弊,选择 root 用户,而忽略了了解 MySQL 用户和权限的工作方式。认真地说:创建一个单独的用户。

答案3

MySQL Workbench 支持 ssh 隧道:https://dev.mysql.com/doc/workbench/en/wb-mysql-connections-methods-ssh.html

MySQL Workbench 正在内部使用波拉米科python 模块。过去,由于一些错误,我不得不手动更新它。但较新版本的 MySQL Workbench 附带了更新版本的 paramiko。因此请确保您使用的是最新版本的 MySQL Workbench。

您将需要用户名/密码对或用户名/ssh_key 对进行身份验证,以及 SSH 服务器主机名或 IP。

相关内容