![使用 MySQL Workbench 连接到私有 VPC 子网中的数据库实例](https://linux22.com/image/654249/%E4%BD%BF%E7%94%A8%20MySQL%20Workbench%20%E8%BF%9E%E6%8E%A5%E5%88%B0%E7%A7%81%E6%9C%89%20VPC%20%E5%AD%90%E7%BD%91%E4%B8%AD%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AE%9E%E4%BE%8B.png)
如何使用 MySQL Workbench 连接到 VPC 中私有子网中的 AWS(或其他)实例?
我的安排是典型的 aws场景 2:
我可以:
- 通过 SSH 进入位于我的 VPC 公共子网中的 NAT 实例
- 通过 SSH 从我的 NAT 实例进入我的 VPC 私有子网中的数据库实例
-root
一旦连接到我的私有数据库实例,即可以用户身份连接到 MySQL
设置系统通过 MySQL 工作台进行远程连接的正确步骤是什么?
答案1
使用 MySQL Workbench 通过 NAT 连接到私有子网实例中的数据库
创建可以远程连接的mysql用户:
- 默认情况下
root
用户无法远程连接 创建一个允许从你的 IP 地址连接的用户(或使用 % ,这意味着任何地址)
-- 通过 SSH 连接到私有子网中的数据库实例
-- 以 root 身份登录 mysql 并在出现提示时输入密码:
mysql -h localhost -u root -p
-- 运行以下查询来创建用户
CREATE USER 'username'@'XX.XX.XX.XX' IDENTIFIED BY 'mypassword';
-- 确保您添加的用户具有所需的所有权限:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'IP' IDENTIFIED BY 'password';
确保您添加的用户的用户名和密码都不重复
——使用以下 mysql 查询在终端中查看用户表:
select * from mysql.user\G;
——出于安全性和潜在用户冲突的原因,删除匿名用户是个好主意: https://stackoverflow.com/questions/10299148当完成运行查询时:
FLUSH PRIVILEGES;
设置安全组以允许通过 NAT 实例进行远程 MySQL 连接:
使用 WorkBench,您可以通过 SSH 隧道连接到 NAT,然后通过端口 3306 连接到数据库实例
确保你连接的 IP 被允许连接到 AWS 安全组中的 3306 端口
——NAT 实例应该具有 SSH(22)入站从你的IP地址
--NAT实例应该有MySQL(3306)出站朝向 VPC 地址范围(例如 10.0.0.0/16)——VPC
私有子网中的数据库实例应允许入站MySQL(3306) 来自 VPC 私有 IP 范围(例如 10.0.0.0/16)
设置 Workbench 以通过 NAT 实例连接到您的数据库实例:
- 打开工作台
- 创建一个新连接并为其命名(例如 my_vpc_db1)
-- 选择“标准 TCP/IP over SSH”作为连接方法
- SSH 主机是 NAT 实例的公共 IP,例如 XX.XX.XX.XX
- SSH 用户名 = ec2-user
- SSH 密码为空(如有必要,请清除)
-- SSH 密钥文件 = 浏览到 key_pair.pem 文件的位置
- MySQL 主机名 = VPC 中数据库实例的私有 IP 地址
- MySQL 服务器端口 = 3306
- 用户名 = 您刚刚在 CREATE USER 中添加的名称
- 密码 = 刚刚在 CREATE USER 中添加