扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1、干掉正在运行的数据库:
创新互联公司是一家集网站建设,北湖企业网站建设,北湖品牌网站建设,网站定制,北湖网站建设报价,网络营销,网络优化,北湖网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
(方法1)/etc/init.d/mysqld stop
(方法2)rcmysqld stop
(方法3)service mysqld stop
(方法4)kill -TERM mysqld
2、启动mysql服务器(--skip-grant-tables忽略用户表)
mysqld_safe --user=mysql --skip-grant-tables --skip-networking
3、重新使用root用户登录数据库
mysql -u root mysql
4、重新设置root密码
mysql UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
5、刷新权限
mysql FLUSH PRIVILEGES;
6、退出mysql
mysql quit
7、重启mysql
(1)/etc/init.d/mysqld restart
(2)service mysqld restart
8、使用root用户重新登录mysql
(方法1)mysql -uroot -p
(方法2)service mysqld start
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"
valueSELECT 1/value
/property
用来指定在使用连接之前要进行测试。
property name="testBeforeUse"
valuetrue/value
/property
mysql远程连接不上 网上很多解决方案,很多都是复制粘贴的,含金量不高;就说说我遇到的问题,和解决方案。
mysql远程连接不上,首先得授权
例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
其中myuser ,mypassword 可以启用新名称
我们知道,在某些MySQL数据库版本中,root用户默认是不可以在远程登录的,只能localhost登陆,网上很多说 改表,把localhost改成%,非常反对这样做,这样做本地登陆后,会发现只剩两个数据库了,没有mysql这个数据库了,这是权限导致的;
修改MySQL数据库的root用户让能在远程登录时一定要格外小心(特别是指定为任意ip的),并且要为其指定密码,否则的话很有可能被窃取。
刷新后重启,mysql再进行远程连接,如果所有的方法都试过了,还是连接不上去
检查端口问题,在本地打开cmd,输入 telnet+远程ip+远程mysql的端口,如果不通,检查telnet(服务器上的)是否启动,防火墙是否放过此端口,或者关闭防火墙。然后重启mysql服务器,再连接试试,如果还是不能连接并且服务器是托管,如托管在万网上,让万网放行此端口号;
1.在mysql安装目录下的 my.ini 文件中的 [mysqld] 标签里加上 skip-grant-tables 跳过权限表
2.重启mysql服务,这时可以连接上
3.改表
mysqluse mysql;
mysqlupdate user set host = '%' where user = 'root';
mysqlselect 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,就可以连接上了
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流