Linux下解决MySQL服务的两个基本问题_MySQL
1.第一次起动mysql是没有问题的.对mysql做了一些操作,特别是删除mysql中一些不要的帐号后,重新起动mysql会遇到这样的问题
#/etc/init.d/mysqld restart stopping mysql [ok] Timeout error occurred trying to start MySQL Daemon. [failure] |
但是这个时候mysql实际上已经起动了,因为用netstat -ln命令去看3306端口已经起动.使用mysql -u root -p password也能连接到数据库.
这实际上是mysql-3.x的一个bug(具体可以去看mysql的bugzilla和redhat的bugzilla).
是什么原因导致连接超时呢?
我们不妨先看看/etc/init.d/mysqld起动脚本是如何工作的,注意下面的一段
# If you've removed anonymous users, this line must be changed to if !([ -n "`$ping 2> /dev/null`" ]); then |
我们看到,脚本判断mysql是否起动,使用的是mysqladmin ping命令.
而这个命令想要正确执行是需要能够登录mysql的.现在一些默认帐号已经删除,而且其它帐号已经设置了密码(默认没有设置密码).于是它没有办法连接到mysql.
不妨使用下面的命令测试一下
#mysqladmin -u root -ppassword ping mysql alive |
当你提供了帐号和密码时,它的ping命令就可以正确执行了.
这个bug在mysql新出的mysql4.x可以解决.
但是RH9到FC3一直使用的是mysql3.x(不过mysql官方好象才推出mysql4.1,FC需要考虑问题性).
于是我用了下面的办法临时解决.
a)建立一个帐号,不设置密码,不给任何权限.
b)修改/etc/init.d/mysqld
下面我给出具体操作
#mysql -u root -p passwd mysql>revoke select on test.* from daemon@localhost |
打开/etc/init.d/mysqld
把下面这行
ping="/usr/bin/mysqladmin -uUNKNOWN_MYSQL_USER ping"
修改为
ping="/usr/bin/mysqladmin -udaemon ping"
保存,退出.
推荐阅读
-
Linux下远程连接MySQL数据库的方法
-
Linux连接mysql报错:Access denied for user ‘root’@‘localhost’(using password: YES)的解决
-
linux 服务器自动备份脚本的方法(mysql、附件备份)
-
Linux下修改MySQL数据库数据文件路径的步骤
-
linux下mysql乱码问题的解决方案
-
Ubuntu14.04服务器环境下配置PHP7.0+Apache2+Mysql5.7的方法
-
阿里云Linux CentOS 7.2下自建MySQL的root密码忘记的解决方法
-
Linux连接mysql报错:Access denied for user ‘root’@‘localhost’(using password: YES)的解决
-
linux下oracle报错,提示ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务的解决办法
-
Mac下忘记Mysql的root用户密码的解决方法