mysql问题排查过程

《mysql问题排查过程》要点:
本文介绍了mysql问题排查过程,希望对您有用。如果有疑问,可以联系我们。

导读:建了两个用户,一个laravel,一个blog用户以及他们的同名数据库.建好之后,命令行下面连接mysql服务,都能正常登录,并且也都能连上各自的数据库.
前置操作

建了两个用户,一个blog用户以及他们的同名数据库.
建好之后,并且也都能连上各自的数据库.

问题体现

之前laravel用的root账号,这次建好laravel用户之后,改了laravel的配置文件,laravel的服务一切正常
但是blog用户能在终端登录,代码不能连接数据库.

1.开始以为是用户权限没设置好

1.1 重新设置权限给blog用户,还是不行.

1.2 根据mysql官方文档删除用户之后,重建blog用户. 竟然还是不行!

1.3 刚好在迁移博客的时候从GitHub拉了typecho的新代码,这个时候以为是typecho升级造成的问题,那么就别升级了,直接用新代码新安装.竟然还是不行!!

** 期间经历了重启php-fpm,重启mysql等各种乱七八糟的操作之后还是没解决.**
那就只能看看调试信息了.

2.调试

typecho只提示连接数据库失败,上服务器改了下install.php文件,把具体的异常打印出来.
异常中说SQLSTATE[HY000] [2002] No such file or directory,好,那就搜一下.

3.搜索

好多人都说连接数据库的时候把localhost改成127.0.0.1就可以解决.但如果就这么解决了多没意思
有人提到是socket文件不对.看了下php.ini,配置文件中的选项是空的,注释掉的.

解决

解决A

这里其实应该有解决办法了,就是去改php.ini,设置默认的socket.
但还是不想这么简单的解决问题,就继续往下查了.

解决B

(这里还走了一个弯路,以为是socket文件不对,删掉sock文件,重启mysql,发现还是不行.)

执行ps aux | grep mysql,看到

mysql 11964 02:48 0:01 /usr/sbin/mysqld --basedir=... --socket=/var/lib/mysql/mysql.sock
连接mysql,执行mysql> show variables like '%sock%',结果:

+-----------------------------------------+---------------------------+
| Variable_name                           | Value                     |
+-----------------------------------------+---------------------------+
| performance_schema_max_socket_classes   | 10                        |
| performance_schema_max_socket_instances | -1                        |
| socket                                  | /var/lib/mysql/mysql.sock |
+-----------------------------------------+---------------------------+

看了下php的配置php -i | grep socket

pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock
这里可以看到mysql的socket设置和php是的socket是不对应的.
这里用了一个比较二的方法.直接在/tmp建立了一个软连接到实际的sock,能运行了.

后期的猜测与疑问

1.为什么laravel能正常跑而typecho不行呢?
猜测:typecho用的是pdo,会需要这个socket,laravel没用这个.
在调试期间也用phpstorm自带的数据库连接器连接也失败,如果是这种猜测的话为什么phpstorm也失败,莫非phpstorm用的连接内核也是PDO?

2.为什么他们把localhost改成127.0.0.1就行?

这个问题就太专业了,不知道了.

中途还惨杂着切换typecho各种试,typecho新老版本还切换了不同的数据驱动文件.
排查问题的时候还是别搞幺蛾子了,一点点慢慢排查.
我有时候有点受虐倾向,就是喜欢走弯路去排查问题.

相关文章

随着云计算和网络技术的发展,越来越多的数据需要在服务器之...
阿里云服务器Tomcat无法从外部访问一、环境阿里云Ubuntu 12....
购买一系列的东西其实就是花钱买块区域,服务器,域名,云解...
前言昨天买了域名,服务器,然后搭建了环境,然后想他通过默...
前言由于服务器centos6.8安装mysql一直出现不能连接问题,然后...
前言用 SSH客户端登录上以后,自己想要在本地连接服务器上的...