如果可能的话,我想避免将默认端口3306对外开放。我们正在运行Nginx,以用于其他应用程序的反向代理。这里的目标是从本地网络外部以客户端(例如MySQL Workbench)访问MySQL数据库。 MySQL服务器在Debian(Linux)虚拟机上运行。
我如下所述配置了一个服务器块。使用非root用户在MySQL Workbench中连接到mysql.domain.com的端口80会导致失败。
服务器块:
server {
server_name mysql.domain.com;
location / {
proxy_pass http://localhost:3306/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
错误消息:
Failed to Connect to MySQL at mysql.domain.com:80 with user non-root.
Lost connection to MySQL at 'waiting for initial communication packet', system error: 10060
答案 0 :(得分:1)
这里的目标是通过局域网外的客户端(例如MySQL Workbench)访问MySQL数据库
所有现代MySQL GUI客户端均支持SSH隧道。这是最安全的连接方法,需要在服务器端进行零配置:如果可以通过SSH连接,则可以连接到该主机上的MySQL。
在MySQL Workbench中,创建连接时,选择“基于SSH的标准TCP / IP”作为连接方法,然后填写SSH连接详细信息和MySQL连接详细信息。关键是将MySQL服务器设置为127.0.0.1
,因为您通常希望连接到在SSH进入的计算机上运行的MySQL实例。这就是全部。