当前位置: 首页 > news >正文

使用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 客户端

在内网机器上运行:

frpc -c frpc.ini

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


4. 配置 MySQL 远程访问权限

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

  1. 登录 MySQL:

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

    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):

    bind-address = 0.0.0.0  # 允许所有 IP 连接
  4. 重启 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 验证端口是否开放。

http://www.xdnf.cn/news/225955.html

相关文章:

  • 深度解析 MindTorch:无缝迁移 PyTorch 到 MindSpore 的高效工具
  • terraform backend用途是最佳实践
  • 学习influxDB的安装和使用
  • CentOS Linux 环境二进制方式安装 MySQL 5.7.32
  • 怎么做好质量管理?质量管理怎么做到高效又保质?
  • 【wsl】命令说明,wsl的虚拟机ubuntu十分好用
  • Sehll编程的函数于数组
  • 深度解析:Vue.js 性能优化全景指南(从原理到实践)
  • micro-app前端微服务原理解析
  • JVM快速入门
  • ubuntu下一些环境配置
  • 自定义实现elementui的锚点
  • hadoop伪分布式模式
  • 【操作系统】进程和线程的区别
  • Dify 获取天气数据并以echarts图表显示
  • SPSS PCA+判别分析
  • Axure疑难杂症:全局变量跨页面赋值、中继器交互(玩转全局变量)
  • 4:QT联合HALCON编程—机器人二次程序抓取开发(九点标定)
  • [特殊字符] Spring Cloud 微服务配置统一管理:基于 Nacos 的最佳实践详解
  • windows远程服务器数据库的搭建和远程访问(Mysql忘记密码通过Navicat连接记录解密密码)
  • Android学习总结之设计场景题
  • 当插入排序遇上“凌波微步“——希尔排序的奇幻漂流
  • 单体项目到微服务的架构演变与K8s发展是否会代替微服务
  • 华为云汪维敏:AI赋能应用现代化,加速金融生产力跃升
  • “BYD SHENZHEN”启运,搭载超7000台比亚迪新能源车前往巴西
  • 金融风控的“天眼”:遥感技术的创新应用
  • H.264添加 SEI 信息技术文档
  • MySQL bin目录下的可执行文件
  • 零基础学Java——第八章:Java网络编程(下)
  • 数据资产管理与AI融合:物联网时代的新征程