怎样设置才能允许外网访问MySQL

怎样设置才能允许外网访问MySQL,第1张

1、打开mysqlexe(MySQL Command Line Client),输入密码

2、输入:use mysql;

3、查询host输入: select user,host from user;

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

如果没有"%"这个host值,就执行下面这两句:

mysql> update user set host='%' where user='root';

mysql> flush privileges;

5、授权用户

(1)任意主机以用户root和密码pwd连接到mysql服务器

mysql> GRANT ALL PRIVILEGES ON TO 'root'@'%' IDENTIFIED BY 'pwd' WITH GRANT OPTION;

mysql> flush privileges;

(2)指定IP为(如1921681100)的主机以用户tuser和密码tpwd连接到mysql服务器

mysql> GRANT ALL PRIVILEGES ON TO 'tuser'@'1921681100' IDENTIFIED BY 'tpwd' WITH GRANT OPTION;

mysql> flush privileges;

要点:

1确认服务器端SQL服务端口号是否为:1433

2如果不是1433,配置客户端

3建立服务器端登录帐号,确保角色及管理数据库

一、查看服务器端情况

1 看ping 服务器IP能否ping通。

这个实际上是看和远程sql server 服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当然得确保远程sql server 服务器的IP拼写正确。

2 在Dos或命令行下输入telnet 服务器IP 端口,看能否连通。

如telnet 202114100100 1433

通常端口值是1433,因为1433是sql server 的对于Tcp/IP的默认侦听端口。如果有问题,通常这一步会出问题。通常的提示是“……无法打开连接,连接失败"。

如果这一步有问题,应该检查以下选项。

1) 检查远程服务器是否启动了sql server 服务。如果没有,则启动。

2) 检查sql server服务器端有没启用Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。检查方法是,在服务器上打开 开始菜单->程序->Microsoft SQL Server->服务器网络实用工具,看启用的协议里是否有tcp/ip协议,如果没有,则启用它。

3) 检查服务器的tcp/ip端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。

事实上,如果默认端口被修改,也是可以的,但是在客户端做telnet测试时,写服务器端口号时必须与服务器配置的端口号保持一致。如果隐藏sql server服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接,但是Tcp/ip协议的默认端口将被隐式修改为2433,在客户端连接时必须作相应的改变(具体方式见 二:设置客户端网络实用工具)。

4) 如果服务器端 *** 作系统打过sp2补丁,则要对windows防火墙作一定的配置,要对它开放1433端口,通常在测试时可以直接关掉windows防火墙(其他的防火墙也关掉最好)。(4、5步我没有做就成功了)

5) 检查服务器是否在1433端口侦听。如果sql server服务器没有在tcp连接的1433端口侦听,则是连接不上的。检查方法是在服务器的dos或命令行下面输入

netstat -a -n 或者是netstat -an,在结果列表里看是否有类似 tcp 127001 1433 listening 的项。如果没有,则通常需要给sql server 2000打上至少sp3的补丁。其实在服务器端启动查询分析器,输入select @@version 执行后可以看到版本号,版本号在802039以下的都需要打补丁。

如果以上都没问题,这时你再做telnet 服务器ip 1433 测试,将会看到屏幕一闪之后光标在左上角不停闪动。恭喜你,你马上可以开始在企业管理器或查询分析器连接

默认情况下,mysql数据库用的是3306的端口,你只要在路由器里把3306端口映射到mysql 服务器的IP就可以了, 你外网访问时直接访问路由器的外网地址+端口号就行了。路由器可以用花生壳来实现外网地址和域名的转换。最终你访问就是: ”花生壳的域:3306“就可以了。

服务器放在局域网内进行测试时,数据库的访问速度还是很快。但当服务器放到外网后,数据库的访问速度就变得非常慢。

后来在网上发现解决方法,myini里面添加

[mysqld]

skip-name-resolve

这样速度就快了!

skip-name-resolve

选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。

就MySQL本身而言,问题出在在mysql dns反解析

mysql>show processlist;

| 20681949 | unauthenticated user | 10104193:52497 | NULL | Connect | | Reading from net | NULL |

| 20681948 | unauthenticated user | 10104193:52495 | NULL | Connect | | Reading from net | NULL

发现有非常多的 unauthenticated user 尝试做登入使用 mysql 的情况 ,当这种情况无限制发生时就会造成系统十分缓慢。

查阅mysql官方网站得知,这属于官方一个系统上的特殊设定,就把他当成mysql的一个bug算了,不管链接的的方式是经过 hosts 或是 IP 的模式,他都会对 DNS 做反查。mysqld 会尝试去反查 IP -> dns ,由于反查解析过慢,就会无法应付过量的查询。

以上就是关于怎样设置才能允许外网访问MySQL全部的内容,包括:怎样设置才能允许外网访问MySQL、sql 怎样外网连接远程数据库、局域网怎么做实现外网访问内网mysql数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9517091.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存