首页 > 技术文章 > mysql设置外网访问

imbasaber 2017-01-04 10:57 原文

公司有个mysql的数据库放在221服务器上,做手机app数据库连接的时候,本地调试没问题,一旦更新到外网142手机服务器(220.230.190.142),就是数据库连接超时。想到可能是mysql没设置142访问的权限。

1、设置任意主机以root账号以root111密码进行连接

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root111' WITH GRANT OPTION;
flush privileges;

 设置完发现还是无法连接(可能是没有设置host %的原因吧,下面是设置host,但是我没试过)

1、打开mysql.exe(MySQL Command Line Client),输入密码

2、输入:use mysql;

3、查询host输入: select user,host from user;(这个;还蛮重要的,不然不执行sql)

4、创建host(如果有"%"这个host值,则跳过这一步)

如果没有"%"这个host值,就执行下面这两句:
mysql> update user set host='%' where user='root';
mysql> flush privileges;

2、设置特定的142服务器ip访问权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'220.230.190.142' IDENTIFIED BY 'admin89.' WITH GRANT OPTION;
flush privileges;

 发现手机服务器可以访问,解决!

*注(引用下别人的解释)

mysql.user表中Host为%的含义

Host列指定了允许用户登录所使用的IP,比如user=root;Host=192.168.1.1。意思就是说root用户只能通过192.168.1.1的客户端去访问。

而%是个通配符,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。
如果Host=%,表示所有IP都有连接权限。这也就是为什么在开启远程连接的时候,大部分人都直接把Host改成%的缘故,为了省事。

推荐阅读