《mysql問題排查過程感受》要點:
本文介紹了mysql問題排查過程感受,希望對您有用。如果有疑問,可以聯系我們。
晚上把博客遷了個服務器,新建用戶的時候遇到問題了.
關于mysql的問題.
前置操作
建了兩個用戶,一個laravel,一個blog用戶以及他們的同名數據庫.
建好之后,命令行下面連接mysql服務,都能正常登錄,而且也都能連上各自的數據庫.
問題體現
之前laravel用的root賬號,這次建好laravel用戶之后,改了laravel的配置文件,laravel的服務一切正常
但是blog用戶能在終端登錄,代碼不克不及連接數據庫.
1.1 重新設置權限給blog用戶,還是不行.
1.2 根據mysql官方文檔刪除用戶之后,重建blog用戶. 竟然還是不行!
1.3 剛好在遷移博客的時候從GitHub拉了typecho的新代碼,這個時候以為是typecho升級造成的問題,那么就別升級了,直接用新代碼新安裝.竟然還是不行!!
** 期間經歷了重啟php-fpm,重啟mysql等各種亂七八糟的操作之后還是沒辦理.**
那就只能看看調試信息了.
typecho只提示連接數據庫失敗,上服務器改了下install.php文件,把具體的異常打印出來.
異常中說
,好,那就搜一下.
好多人都說連接數據庫的時候把localhost改成127.0.0.1就可以辦理.但如果就這么辦理了多沒意思
有人提到是socket文件紕謬.看了下php.ini,配置文件中的選項是空的,注釋掉的.
辦理A
這里其實應該有解決方法了,就是去改php.ini,設置默認的socket.
但還是不想這么簡單的辦理問題,就繼續往下查了.
辦理B
(這里還走了一個彎路,以為是socket文件紕謬,刪掉sock文件,重啟mysql,發現還是不行.)
執行
,看到
連接mysql,執行
,成果:
看了下php的配置
這里可以看到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新老版本還切換了分歧的數據驅動文件.
排盤問題的時候還是別搞幺蛾子了,一點點慢慢排查.
我有時候有點受虐傾向,便是喜歡走彎路去排查問題.
從頭到尾總共能花了兩個多小時吧..
維易PHP培訓學院每天發布《mysql問題排查過程感受》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。