使用frpc链接内网的mysql

以下是配置 frpc 连接内网 MySQL 服务的详细步骤:


1. 准备工作

  • frps 服务器 :已部署在公网 IP 11.117.11.245,假设 frps 的默认端口为 7000。

  • 内网 MySQL 服务 :运行在内网机器的 3306 端口。

  • 目标 :通过公网 IP 11.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 客户端

在内网机器上运行:

bash 复制代码
frpc -c frpc.ini

输出应包含 ProxyName [mysql] start success,表示隧道建立成功。


4. 配置 MySQL 远程访问权限

确保内网 MySQL 允许外部连接:

  1. 登录 MySQL:

    bash 复制代码
    mysql -u root -p
  2. 授权远程访问(替换 your_password 为实际密码):

    bash 复制代码
    CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_password';
    GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%';
    FLUSH PRIVILEGES;
  3. 修改 MySQL 配置文件(如 /etc/mysql/mysql.conf.d/mysqld.cnf):

    bash 复制代码
    bind-address = 0.0.0.0  # 允许所有 IP 连接
  4. 重启 MySQL:

    bash 复制代码
    systemctl restart mysql

5. 开放防火墙端口

在 frps 服务器 上放行 3307 端口:

bash 复制代码
# 使用 ufw(Ubuntu)
ufw allow 3307/tcp

# 或使用 iptables(通用)
iptables -A INPUT -p tcp --dport 3307 -j ACCEPT

6. 测试连接

从外网通过公网 IP 和端口连接 MySQL:

bash 复制代码
mysql -h 11.117.11.245 -P 3307 -u remote_user -p

输入密码后,若成功登录,说明配置完成。


7. 安全增强(可选)

  • 限制访问 IP :在 frps 服务器防火墙中,仅允许特定 IP 访问 3307 端口。

  • 启用 frp 加密:

    bash 复制代码
    [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 验证端口是否开放。

相关推荐
IT19953 小时前
Fail2Ban 防护 MySQL 实战|登录失败 3 次,IP 封禁 24 小时
数据库·mysql
夕除3 小时前
redis--IO 多路复用(select + poll)
数据库·sql
paopaokaka_luck5 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
lzhdim7 小时前
100条常用SQL语句
数据库·sql·mysql·mybatis
天河归来7 小时前
从原始消息到业务数据:三层数据架构的设计与实践
数据库·数据仓库·架构
数据库小学妹7 小时前
金融数据库成本怎么算?五笔钱加一张TCO表
数据库·金融行业·数据库选型·国产化替代·tco·金融数据库
KaiwuDB7 小时前
KaiwuDB 分布式集群扩缩容,从原理到完整操作踩坑总结
运维·数据库·分布式
auspicious航7 小时前
PostgreSQL的备份与恢复
数据库·postgresql
这个DBA有点耶8 小时前
从 MySQL 到时序数据库:我帮朋友做迁移的完整记录
数据库·架构·dba
泡海椒8 小时前
深度解析JQuick-SQL AST到逻辑计划转换机制|分布式SQL原理
数据库·分布式·sql