mysql 远程访问 设置 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
final0pro
V2EX    数据库

mysql 远程访问 设置

  •  
  •   final0pro 2015-07-05 04:29:47 +08:00 1270 次点击
    这是一个创建于 3803 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近被计算机网络绕晕了

    我知道 mysql 远程访问设置有二个步骤

    1. 设置bind-address
    2. grant all on * TO user@'user_ip'

    疑问是

    1. bind-address设置为0.0.0.0或者192.168.1.x局域网地址,或者数据库服务器某个public ip
    • 如果设置为局域网 IP 地址,是不是只有局域网的机器才能访问数据库?同理,如何设置公开 IP 地址,是不是只有外网机器才能访问数据库?而设置为0.0.0.0,则能同时运行局域网内外机器访问数据库
    • bind-address究竟是什么?是监听本机3306端口的意思吗?而开放公网地址,则允许远程主机访问,因为请求的地址是公网 IP。
    1. 这个user_ip是哪个?是 user 的公网 IP,还是数据库所在局域网的网关 IP?

    我一直以为是公网 IP,后来自己建立了个虚拟机,发现grant 的是局域网的默认网关 IP。彻底晕了,是因为数据包进入服务器局域网最后一站是网关吗,数据包里 source ip 变成了局域网 ip 了?

    晕晕的。谢谢!

    4 条回复    2015-07-06 11:14:13 +08:00
    vibbow
        1
    vibbow  
       2015-07-05 08:44:04 +08:00   1
    LZ的提问方式把我也绕晕了。

    Q: 如果设置为局域网 IP 地址,是不是只有局域网的机器才能访问数据库?
    A: 你bind到某个IP,那么只有能访问到这个IP的机器才能访问到数据库
    比如说你bind到192.168.1.x,那外网的机子肯定没法直接访问到你内网的IP的啊
    如果你bind的是外网IP,那么访问192.168.1.x也是没法连接到你的数据库的


    Q: 这个user_ip是哪个?是 user 的公网 IP,还是数据库所在局域网的网关 IP?
    A: user_ip是用户的公网IP

    因为你是虚拟机,所以情况有些特殊,因为有两种访问方式:
    1. 你的电脑有直接的路由到虚拟机 (这时候你看到的是客户真实的IP)
    2. 虚拟机宿主通过端口转发的方式把流量转发到虚拟机 (这时候看见的就是虚拟机网关的IP)

    如果LZ用的是VirtualBox,那么默认NAT模式下能访问虚拟机的方式是方法2,除非你把虚拟机网卡换为Bridge模式
    如果LZ用的是VMware,那么即使是NAT模式,VMware也“同时”支持两种访问方式的。
    final0pro
        2
    final0pro  
    OP
       2015-07-05 12:34:33 +08:00
    @vibbow brilliant. many thanks!

    谢谢,回答的很清楚。

    第二个问题,用的是 virtualBox 的 NAT+host-only。

    NAT 的情况,host 应该访问不到 guest 的吧?只能通过端口转发连接到某个服务。并且我 bind-address设置的是`192.168.56.190`(guest ip),grant 的 ip 是`192.168.56.1`,主机 host ip 是`10.6.192.256`。
    所以走的应该是 host-only?host-only 情况下 host 访问 guest 的时候,其实是“伪装”成那张 vboxnet 的网卡?

    这几天被 docker 和 virtualbox 绕晕了。不太清楚那些虚拟出的网卡有什么作用。。。
    Microseft
        3
    Microseft  
       2015-07-05 20:01:51 +08:00   1
    既然你是在用虚拟机学习,就不要用NAT方式
    应当使用桥接(brige)模式,这样虚拟机网卡会被认为是一个独立的网卡,更加能够模拟真实的情况

    bind-address是TCP层,如果这层就已经拒绝连接,user的权限设置自然也不会有作用了
    一般如果你需要内网和外网都需要访问,bind-address可以忽略就默认的0.0.0.0
    然后授予相应的用户host
    另外需要防火墙开放3306端口
    不放心还可以用防护墙做一次过滤防止暴力破解之类
    final0pro
        4
    final0pro  
    OP
       2015-07-06 11:14:13 +08:00
    @Microseft 好咧。因为是想再虚拟机里跑 docker,然后就开始尝试比较虚拟机和 docker 的网络,然后就晕了哈哈。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5491 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 03:15 PVG 11:15 LAX 19:15 JFK 22:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86