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

关于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/

一次花费了一两个小时的mysql问题排查的更多相关文章

  1. 【转载】一个小时学会MySQL数据库

    一个小时学会MySQL数据库   目录 一.数据库概要 1.1.发展历史 1.1.1.人工处理阶段 1.1.2.文件系统 1.1.3.数据库管理系统 1.2.常见数据库技术品牌.服务与架构 1.3.数 ...

  2. Springboot:Springboot+mysql5.7搭建服务,超过8小时连接mysql失败

    报错信息 2017-03-12 03:00:02.539 ERROR 9311 --- [nio-9000-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] ...

  3. mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案

    在连接字符串中  添加设置节点 ConnectionLifeTime(计量单位为 秒).超过设定的连接会话 会被杀死! Connection Lifetime, ConnectionLifeTime ...

  4. 【mysql】连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案

    1. 增加 MySQL 的 wait_timeout 属性的值.  修改 /etc/mysql/my.cnf文件,在 [mysqld] 节中设置: # Set a connection to wait ...

  5. 一个小时学会MySQL数据库

    随着移动互联网的结束与人工智能的到来大数据变成越来越重要,下一个成功者应该是拥有海量数据的,数据与数据库你应该知道. 一.数据库概要 数据库(Database)是存储与管理数据的软件系统,就像一个存入 ...

  6. 一个小时学会 MySQL 数据库

    随着移动互联网的结束与人工智能的到来大数据变成越来越重要,下一个成功者应该是拥有海量数据的,数据与数据库你应该知道. 一.数据库概要 数据库(Database)是存储与管理数据的软件系统,就像一个存入 ...

  7. 关于instrinsicContentSize, ContentHuggingPriority, ContentcompressionResistancePriority的理解

    ios 关于intrinsic理解 最近由于项目的需要想给MBProgressHUD添加一个自定义的view, 结果花费了一两个小时也没添加上去,添加上去的view没有实际的大小,即使你给他设置了一个 ...

  8. 前端必备,5大mock省时提效小tips,用了提前下班一小时

    ​ 一.一些为难前端的业务场景 在我的工作经历里,需要等待后端童鞋配合我的情形大概有以下几种: a.我们跟外部有项目合作,需要调用到第三方接口. 一般这种情况下,商务那边谈合同,走流程,等第三方审核, ...

  9. 怎样在两小时内搞定 OpenStack 部署?(转)

    怎样在两小时内搞定 OpenStack 部署? OpenStack的安装是一个难题,组件众多,非常麻烦.如果手工部署OpenStack,可能需要好几天,使用RDO,就是几个命令,再加一两个小时的等待. ...

随机推荐

  1. 并行模式库PPL应用实战(一):使用task类创建并行任务

    自 VS2010 起,微软就在 CRT 中集成了并发运行时(Concurrency Runtime),并行模式库(PPL,Parallel Patterns Library)是其中的一个重要组成部分. ...

  2. mysqldump 用法总结

    mysqldump 备份 备份数据库 my_database $ mysqldump -uUSER -pPASSWD my_database > my_database.sql 备份数据库 my ...

  3. 获取当前 系统时间 + 获取当前URL 键值;

    一://系统当前时间 function show(){ var mydate = new Date(); var str = "" + mydate.getFullYear() + ...

  4. 伞兵(Paratroopers)

    伞兵(Paratroopers) 时间限制: 1 Sec  内存限制: 128 MB 题目描述 公元 2500 年,地球和火星之间爆发了一场战争.最近,地球军队指挥官获悉火星入侵者将派一些伞兵来摧毁地 ...

  5. [USACO4.2]草地排水Drainage Ditches

    题目背景 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草 要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹 ...

  6. golang 私钥"加密"公钥"解密"

    ---恢复内容开始---   之前工作主要使用C/C++与银行/第三方支付对接,但C/C++无法满足客户"当天给协议明天实盘上载"的开发速度以及现公司一些特殊情况,所以决定用go来 ...

  7. 添加保存less报错

    编辑器在添加保存less文件弹出一下错误: re-evaluation native module sources is not supported,if you are using the grac ...

  8. Jenkins插件开发

    一.环境配置 不赘述,直接看wiki:https://wiki.jenkins.io/display/JENKINS/Extend+Jenkins 二.内容说明 1.插件代码结构 src/main/j ...

  9. linux 权限字母含义

    查看某一文件夹下所有文件夹的权限情况:ls -l分别是:所有者(user)-所有者(user)-其他人(other)r 表示文件可以被读(read)w 表示文件可以被写(write)x 表示文件可以被 ...

  10. laydate时间插件更换皮肤

    <script> ;!function(){ laydate.skin('molv'); laydate({ elem: '#demo' }) }();</script>