您的位置:首页 > 数据库

一台电脑不能连接另外一台电脑的数据库

2016-12-14 00:40 357 查看
出现的问题:
Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

解决:

原因1:

首先,请确定客户端电脑能否ping通服务器电脑。不能估计是原因2,可以的话可以继续本方法。

大部分原因是由于数据库回收了连接,而系统的缓冲池不知道,继续使用被回收的连接所致的。

       以MySQL为例:

       第一种解决办法,就是将mysql回收空闲连接的时间变长,mysql默认回收时间是8小时,可以在mysql目录下的my.ini中增加下面配置,将时间改为1天。单位是秒,最大好像是24天:

          [mysqld]

          wait_timeout=86400

       第二种解决办法,可以通过配置,让缓冲池去测试连接是否被回收,如果被回收,则不继续使用,以dbcp为例:

          #SQL查询,用来验证从连接池取出的连接

          dbcp.validationQuery=SELECT 1

          #指明连接是否被空闲连接回收器(如果有)进行检验,如果检测失败,则连接将被从池中去除

          dbcp.testWhileIdle=true

          #在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位,一般比minEvictableIdleTimeMillis小

          dbcp.timeBetweenEvictionRunsMillis=300000

          #在每次空闲连接回收器线程(如果有)运行时检查的连接数量,最好和maxActive一致

         dbcp.numTestsPerEvictionRun=50

          #连接池中连接,在时间段内一直空闲,被逐出连接池的时间(1000*60*60),以毫秒为单位

          dbcp.minEvictableIdleTimeMillis=3600000

原因2:

windows防火墙不允许访问。关闭防火墙,或者允许指定端口访问。

原因3:
1。改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改
"mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%" 1.mysql -u root -pvmwaremysql>use mysql;mysql>update user set host = '%' where user =
'root';mysql>select host, user from user; 
2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。 GRANT ALL PRIVILEGES
ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码 GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
3.在window自带的防火墙里的例外添加3306端口 总结: mysql -u root -p mysql>use mysql;
mysql>select 'host' from user where user='root'; mysql>update user set host = '%' where user ='root'; mysql>flush privileges; mysql>select 'host' from user where user='root'; 第一句是以权限用户root登录 第二句:选择mysql库 第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称) 第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址
第五句:刷新MySQL的系统权限相关表 第六句:再重新查看user表时,有修改。。 重起mysql服务即可完成。

如果第一个方法不行,在网上查了一下,少执行一个语句 mysql>FLUSH   PRIVILEGES
使修改生效.就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 mysql
相关文章推荐