使用frpc链接内网的mysql
以下是配置 frpc 连接内网 MySQL 服务的详细步骤:
1. 准备工作
-
frps 服务器:已部署在公网 IP 1
1.117.11.245
,假设 frps 的默认端口为7000
。 -
内网 MySQL 服务:运行在内网机器的
3306
端口。 -
目标:通过公网 IP 1
1.117.11.245
的某个端口(如3307
)访问内网 MySQL。
2. 配置 frpc 客户端
在内网机器上修改 frpc.ini
文件,添加以下内容:
[common]
server_addr = 11.117.11.245 # frps 的公网 IP
server_port = 7000 # frps 的服务端口# 配置 MySQL 隧道
[mysql]
type = tcp # 使用 TCP 协议
local_ip = 127.0.0.1 # 内网 MySQL 的 IP(如果是本机则填 127.0.0.1)
local_port = 3306 # 内网 MySQL 的端口
remote_port = 3307 # 公网 IP 上暴露的端口(通过此端口访问 MySQL)
3. 启动 frpc 客户端
在内网机器上运行:
frpc -c frpc.ini
输出应包含 ProxyName [mysql] start success
,表示隧道建立成功。
4. 配置 MySQL 远程访问权限
确保内网 MySQL 允许外部连接:
-
登录 MySQL:
mysql -u root -p
-
授权远程访问(替换
your_password
为实际密码):CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%'; FLUSH PRIVILEGES;
-
修改 MySQL 配置文件(如
/etc/mysql/mysql.conf.d/mysqld.cnf
):bind-address = 0.0.0.0 # 允许所有 IP 连接
-
重启 MySQL:
systemctl restart mysql
5. 开放防火墙端口
在 frps 服务器 上放行 3307
端口:
# 使用 ufw(Ubuntu)
ufw allow 3307/tcp# 或使用 iptables(通用)
iptables -A INPUT -p tcp --dport 3307 -j ACCEPT
6. 测试连接
从外网通过公网 IP 和端口连接 MySQL:
mysql -h 11.117.11.245 -P 3307 -u remote_user -p
输入密码后,若成功登录,说明配置完成。
7. 安全增强(可选)
-
限制访问 IP:在 frps 服务器防火墙中,仅允许特定 IP 访问
3307
端口。 -
启用 frp 加密:
[common] tls_enable = true # 启用 TLS 加密[mysql] type = tcp use_encryption = true # 数据加密 use_compression = true # 数据压缩
故障排查
-
连接失败:
-
检查
frpc
日志是否有错误(如端口冲突或网络不通)。 -
确认 MySQL 的
bind-address
已设置为0.0.0.0
。 -
确保内网机器可以访问 frps 的
7000
端口。
-
-
权限问题:
-
确保 MySQL 用户
remote_user@%
已正确授权。 -
使用
telnet 11.117.11.245 3307
验证端口是否开放。
-