zoukankan      html  css  js  c++  java
  • 一次花费了一两个小时的mysql问题排查

    晚上把博客迁了个服务器,新建用户的时候遇到问题了。
    关于mysql的问题。

    前置操作

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

    问题体现

    之前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新老版本还切换了不同的数据驱动文件。
    排查问题的时候还是别搞幺蛾子了,一点点慢慢排查。
    我有时候有点受虐倾向,就是喜欢走弯路去排查问题。

    从头至尾总共能花了两个多小时吧。。
    现在时间2017-07-30 03:45

    博客:http://blog.icp0.com/

  • 相关阅读:
    flock对文件锁定读写操作的问题 简单
    hdu 2899 Strange Fuction(二分)
    hdu 2199 Can you solve this equation? (二分)
    poj 3080 Blue Jeans (KMP)
    poj 2823 Sliding Window (单调队列)
    poj 2001 Shortest Prefixes (trie)
    poj 2503 Babelfish (trie)
    poj 1936 All in All
    hdu 3507 Print Article (DP, Monotone Queue)
    fzu 1894 志愿者选拔 (单调队列)
  • 原文地址:https://www.cnblogs.com/wjfz/p/7264473.html
Copyright © 2011-2022 走看看