Warning: mysqli_num_fields() expects parameter 1 to be mysqli_result, boolean given in /www/wwwroot/dev.zhalaotie.com/wp-includes/wp-db.php on line 3215

Warning: mysqli_num_fields() expects parameter 1 to be mysqli_result, boolean given in /www/wwwroot/dev.zhalaotie.com/wp-includes/wp-db.php on line 3215
宝塔 mysql in docker ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2) – 扎老铁
Warning: mysqli_num_fields() expects parameter 1 to be mysqli_result, boolean given in /www/wwwroot/dev.zhalaotie.com/wp-includes/wp-db.php on line 3215

Warning: mysqli_num_fields() expects parameter 1 to be mysqli_result, boolean given in /www/wwwroot/dev.zhalaotie.com/wp-includes/wp-db.php on line 3215
Warning: mysqli_num_fields() expects parameter 1 to be mysqli_result, boolean given in /www/wwwroot/dev.zhalaotie.com/wp-includes/wp-db.php on line 3215
class="post-53364 post type-post status-publish format-standard hentry">

宝塔 mysql in docker ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

本人还是个菜鸟,下面是我的经验之谈,能解决一些问题,有不对的地方,敬请斧正。

我的是CentOS 7+MySQL 5.5 ~ MySQL 5.7。

重启了一次服务器后,使用> mysql -u root -p登陆是出现下面的错误:

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

于是,我检察mysql状态:

   > /etc/rc.d/init.d/mysqld  status  

      显示stop,未运行。

   >/etc/rc.d/init.d/mysqld  restart

     Stopping mysqld: [ OK ]

     MySQL Daemon failed to start.
     Starting mysqld: [ FAILED]

   >ps -ef | grep mysql

     root 28221 27474 0 14:18 pts/0 00:00:00 grep mysql   只有这一条

至此,我可以确定,mysql无法启动。

我开始排错,首先发现/tmp/mysql.sock不存在

    >vim /etc/my.cnf

      socket=/var/lib/mysql/mysql .sock

      /var/lib/mysql/mysql .sock同样不存在

    >find / -name mysql.sock

      显示为空,未查询到mysql.sock文件,mysql.sock文件丢失了。

我看网上有人说mysql.sock套接字文件可以简单地通过重启服务器重新创建得到它,

     >init 6      重启命令

       重启后发现错误还是那样,没有任何改变,mysql.sock重启服务器未自动生成。

接下来了解到mysql.sock是一个临时文件,在mysql启动时会自动生成,我的服务器未启动,自然就没有mysql.sock文件。

我尝试安全启动模式,mysqld_safe试图通过工作目录找到服务器和数据库,但mysqld_safe还是失败。

   >mysqld_safe &
     Starting mysqld daemon with databases from ....../mysql/var 
     STOPPING server from pid file   .......pid

     130802 15:17:11 mysqld ended

各种命令尝试无效的情况下,我开始了本次最大的收获—-学会看错误日志。

在错误日志中,启动失败的原因极为明显,file ‘./mysql-bin。000004’ not found,failed to open!

mysql开启了bin日志功能,到数据库根目录查看该文件是存在的,可能是文件权限的问题。

   >chown -R mysql:mysql /....../mysql/var

   >mysqld_safe &

   >/etc/rc.d/init.d/mysqld  restart

     Stopping mysqld: [ OK ]

     Starting mysqld: [ OK]

成功启动了!~

修复 /www/server/data 目录下的文件权限改为 777 然后使用宝塔面板自带的按钮启动mysql即可!使用命令行仍然无效。

此时mysql.sock文件出现了,在/var/lib/mysql/mysql .sock。如下图所示,以”s”开头的文件都是socket文件。

发表评论

电子邮件地址不会被公开。