使用MySQL Workbench连接到私有VPC子网中的数据库实例

如何使用MySQL Workbench连接到VPC中私有子网上的AWS(或其他)实例?

我的安排是典型的安排情景2 :

我可以:
– SSH到位于我的VPC公共子网中的NAT实例
– 从我的NAT实例到我的VPC私有子网中的数据库实例的SSH
– 一旦连接到我的私人数据库实例,以root用户身份连接到MySQL

build立系统通过MySQL工作台进行远程连接的正确程序是什么?

使用MySQL Workbench通过NAT连接到专用子网实例中的数据库


创build一个可以远程连接的mysql用户:

  • 默认情况下, root用户无法远程连接
  • 创build一个允许从你的IP地址进行连接的用户(或使用%表示任何地址)
    – 通过SSH连接到私有子网中的数据库实例
    – 以root身份login到mysql,并在提示时键入密码:
    mysql -h localhost -u root -p
    – 运行以下查询来创build一个用户
    CREATE USER 'username'@'XX.XX.XX.XX' IDENTIFIED BY 'mypassword';
    – 确保您添加的用户具有所需的所有权限:
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'IP' IDENTIFIED BY 'password';

  • 确保您添加的用户在用户名或密码中不重复
    – 使用以下mysql查询在terminal中查看用户表:
    select * from mysql.user\G;
    – 删除安全和潜在用户冲突的匿名用户是一个好主意: https : //stackoverflow.com/questions/10299148

  • 当完成运行查询时: FLUSH PRIVILEGES;


设置您的安全组以允许通过NAT实例进行远程MySQL连接:

  • 与WorkBench你是SSH隧道到NAT然后通过端口3306连接到数据库实例

  • 确保您连接的IP被允许连接到AWS安全组中的端口3306
    – NAT实例应该使用从您的IP地址入站的 SSH(22)
    – NAT实例应该有朝向VPC地址范围(例如10.0.0.0/16)的MySQL(3306)
    – VPC私有子网中的数据库实例应允许来自VPC私有IP范围(例如10.0.0.0/16)的入站 MySQL(3306)


设置工作台以通过NAT实例连接到您的数据库实例:

  • 打开WorkBench
  • 创build一个新的连接,并给它一个名字(例如my_vpc_db1)
    – select“通过SSH的标准TCP / IP”作为连接方法
    – SSH主机是NAT实例的公共IP,例如XX.XX.XX.XX
    – SSH用户名= ec2-user
    – SSH密码为空(如有必要请清除)
    – SSH密钥文件=浏览到key_pair.pem文件的位置
    – MySQL主机名= VPC中数据库实例的私有IP地址
    – MySQL服务器端口= 3306
    – 用户名=您在CREATE USER中添加的名称
    – 密码=刚添加到CREATE USER