V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
imherer
V2EX  ›  程序员

MySQL 公网访问问题

  •  
  •   imherer · 2017-06-14 17:46:38 +08:00 · 2844 次点击
    这是一个创建于 2749 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我有多台 MySQL,只有一台云服务器( Linux )能访问他们。因为经常要导数据什么,在云服务器上命令操作很不方便,于是就想用这台云服务器做个 proxy,能让外网访问(为了安全,这台云服务器访问也做了 IP 限制的)

    现在不知道这个 proxy 怎么做?
    端口转发可以吗?试了没成功。

    找了下好像 mysql-proxy 可以实现,但是好像这个是不是只能 proxy 一个地址啊,能同时 proxy 多台 MySQL 吗?
    第 1 条附言  ·  2017-06-14 18:36:26 +08:00
    想多了。
    按照 5L 的做法,什么都不用做,直接就可以连 😄
    18 条回复    2017-06-15 00:05:49 +08:00
    pengdu
        1
    pengdu  
       2017-06-14 17:57:36 +08:00
    不知道 phpMyAdmin 能不能满足你的需求
    imherer
        2
    imherer  
    OP
       2017-06-14 18:00:20 +08:00
    @pengdu 😳 我怎么把这个给忘了。 这个应该可以。 我试试
    strawhat7
        3
    strawhat7  
       2017-06-14 18:07:08 +08:00   ❤️ 1
    你可以在这台 Linux 服务器上用 iptables 做端口转发
    234747005
        4
    234747005  
       2017-06-14 18:11:06 +08:00   ❤️ 1
    用 haproxy 做 tcp 端口代理,在自己的电脑用 Navicat 连接 haproxy 代理的端口。
    cnwtex
        5
    cnwtex  
       2017-06-14 18:12:00 +08:00   ❤️ 2
    navicat 新建链接的时候,后面有个 ssh 选项,勾上隧道,输自己的用户名密码
    raysonx
        6
    raysonx  
       2017-06-14 18:12:56 +08:00   ❤️ 2
    将 MySQL 服务开放到公网是作死的节奏。不要折腾奇怪的软件,建议用 SSH 隧道来代理,安全、方便。

    1.先在本地开 SSH 隧道:
    ssh -L <本地端口>:<数据库主机名 /IP>:<数据库端口号> <SSH 用户名>@<云服务器主机名>
    2. 本地连接代理:
    mysql -h localhost -P <本地端口>
    Light3
        7
    Light3  
       2017-06-14 18:20:27 +08:00   ❤️ 2
    phpMyAdmin 自己记得设 只有你这个 ip 能登.. 要不然 分分钟跑路..
    lilydjwg
        8
    lilydjwg  
       2017-06-14 18:25:22 +08:00   ❤️ 1
    ssh 端口转发啊。
    johnlui
        9
    johnlui  
       2017-06-14 18:27:29 +08:00   ❤️ 1
    最简单的方法:搜 Nginx TCP proxy
    johnlui
        10
    johnlui  
       2017-06-14 18:30:14 +08:00   ❤️ 1
    我以前也用过 mysql-proxy 这类的专用代理,但是最后想了想数据库是基于 TCP 提供服务的,直接 Nginx 做 TCP 反向代理不就行了,试了下,还真好用!一共也没几行代码,也支持回源地址用域名,mysql-proxy 连域名都不支持你敢信,用阿里云的都懂。
    imherer
        11
    imherer  
    OP
       2017-06-14 18:30:59 +08:00
    @raysonx 目前只有那台云服务器能访问数据,用 SSH 隧道后可以直接在我本地访问数据库吗?
    40huo
        12
    40huo  
       2017-06-14 18:39:58 +08:00   ❤️ 1
    @imherer #11 可以,MySQL 只开 localhost 都可以用 SSH 访问。
    coolloves
        13
    coolloves  
       2017-06-14 19:14:47 +08:00 via iPhone   ❤️ 1
    ssh 做端口映射到本机,然后本地就可以直接访问了啊
    artandlol
        14
    artandlol  
       2017-06-14 19:17:02 +08:00 via Android   ❤️ 1
    不需要 root 密码的情况下用 iptables 只允许特定 ip 访问
    nicevar
        15
    nicevar  
       2017-06-14 19:26:09 +08:00
    确实不要开启公网访问,每天遭受的尝试攻击超过你的想象
    imherer
        16
    imherer  
    OP
       2017-06-14 19:27:01 +08:00
    @nicevar 做了访问 IP 限制的,应该还好吧?
    nicevar
        17
    nicevar  
       2017-06-14 19:41:04 +08:00
    @imherer 嗯,限制 ip 倒是没有问题
    timothyye
        18
    timothyye  
       2017-06-15 00:05:49 +08:00
    用 ssh 转发就行了,方法参考 6 楼
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1184 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:04 · PVG 02:04 · LAX 10:04 · JFK 13:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.