一次花費了一兩個小時的mysql問題排查

来源:http://www.cnblogs.com/wjfz/archive/2017/07/31/7264473.html
-Advertisement-
Play Games

晚上把博客遷了個伺服器,新建用戶的時候遇到問題了。 關於mysql的問題。 前置操作 建了兩個用戶,一個laravel,一個blog用戶以及他們的同名資料庫。 建好之後,命令行下麵連接mysql服務,都能正常登錄,並且也都能連上各自的資料庫。 問題體現 之前laravel用的root賬號,這次建好l ...


晚上把博客遷了個伺服器,新建用戶的時候遇到問題了。
關於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/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一,效果圖。 二,工程圖。 三,代碼。 ViewController.m #import "ViewController.h" #import "MBProgressHUD+MJ.h" @interface ViewController () @end @implementation ViewCon ...
  • Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [nan 40] 棧信息列印如下: "解決方法:" 意思是說程式崩潰是CALayer ...
  • 1.先寫遇到的問題: a.ListView只顯示一個item。 listview只顯示一個item,並且做了listview的點擊事件監聽列印 Bean 對象的屬性和哈希值,發現只有顯示的那個 Bean 對象有屬性值,其他item顯示的 Bean 對象屬性值為null,但是 Bean對象有唯一哈希值 ...
  • Eclipse中快速定位 選中項目,ctrl+h 一、目標 查找如下的頁面屬於哪個activity 二、步驟 1、查找關鍵字 上述頁面中“點我”兩個字比較顯眼,我們可以去android項目中搜索出現“點我”兩個關鍵字的位置 2、搜索 選中項目。ctrl+h 定位 點進去後出現 用同樣的方法在butt ...
  • Android系統源代碼 線上源碼網站 1,http://androidxref.com 2,http://www.grepcode.com/ 3,http://www.androidos.net.cn/ 4,http://androidsource.top/ 5,https://github.co ...
  • ANR異常 一、簡介 解決方法:別在主線程中寫非常耗時的操作 二、代碼實例 點擊之後,不停點擊,亂點 出現anr異常 代碼 /anr/src/anr/MainActivity.java 解決方法:別在主線程中寫非常耗時的操作 ...
  • 橫豎屏幕切換生命周期 一、簡介 二、代碼 /activityLifeCycle_3Screen/AndroidManifest.xml 核心代碼:android:configChanges="keyboardHidden|orientation|screenSize" com.fry.activit ...
  • 使用安卓手機真機調試 開發工具:android studio 幾個報錯點 adb找不到報錯 對於新手來說一般都是沒有安裝adb,所以這裡我們需要首先安裝adb來協助手機調試 adb是什麼?全名Andorid Debug Bridg,是一個鏈接開發和手機之間的橋,沒有它是無法通過USB在手機中調試的。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...