mysql5.5连接不到怎么回事

mysql5.5连接不到怎么回事,第1张

mysql宕机主要有两个原因:

1.内存被其它进程大量占用,或数据库本身数据量太大导致mysql宕机

2.程序访问mysql后没有执行mysql.close,大量占用资源导致宕机。

群里提出的这个问题主要是mysql5.5以上的,基本上不是mysql宕机。因为5.5以上的数据库会有个链接超时配置。

默认是28800秒也就是8个小时,会断开连接。

解决方案:

1.修改mysql配置。

如果是linux服务器编辑mysql.cnf 执行vi /etc/mysql.cnf

找到[mysqld] 在底下添加

interactive_timeout=28800000

wait_timeout=28800000

多加了三个0 也就是8000个小时。基本就不用考虑连接超时

修改完配置后,记得重启mysql服务。

2.程序方面。

以java程序为例(抱歉只会java)

打开Spring配置文件,修改applicationContext.xml

在datasource bean底下添加

用来指定测试连接所使用的SQL语句。

如果测试发现连接已经close,那么将自动重建连接。

<property name="houseKeepingTestSql">

<value>SELECT 1</value>

</property>

用来指定在使用连接之前要进行测试。

<property name="testBeforeUse">

<value>true</value>

</property>

具体解决法如下:1.排除网络或防火墙问题先看是否能ping通远程服务器,ping192.168.1.211,如果不可以就是网络问题。然后,检查端口是否被防火墙挡住了,telnet192.168.1.2113306,如果连接失败,配置防火墙。2.配置防火墙,开启3306端口vi/etc/sysconfig/iptables-AINPUT-mstate–stateNEW-mtcp-ptcp–dport3306-jACCEPT(允许3306端口通过防火墙)/etc/init.d/iptablesrestart(重启防火墙使配置生效)2.检查MySQL配置3.如果开启了防火墙,telnet还是失败,通过netstat查看3306的端口状态:netstat-apn|grep3360tcp600127.0.0.1:3306:::*LISTEN13524/mysqld注意红色的地方,这说明3306被绑定到了本地。检查一下my.cnf的配置,这里可以配置绑定ip地址。

1.在mysql安装目录下的 my.ini 文件中的 [mysqld] 标签里加上 skip-grant-tables 跳过权限表

2.重启mysql服务,这时可以连接上

3.改表

mysql>use mysql

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

mysql>select host, user from user

4.授权

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION

在网上看到这一句的意思是允许用户在任何地方可连接,password记得修改成root的密码

5.删除my.ini里的skip-grant-tables,重启mysql,就可以连接上了


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

原文地址: http://outofmemory.cn/zaji/7262089.html

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

发表评论

登录后才能评论

评论列表(0条)

保存