Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2)

来源:https://www.cnblogs.com/zmdComeOn/archive/2020/07/14/13299682.html
-Advertisement-
Play Games

安裝5.7版本的mysql出現如下錯誤 root@iZufkfljcZ:~# mysql -uroot -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/my ...


安裝5.7版本的mysql出現如下錯誤

root@iZufkfljcZ:~# mysql -uroot -p
 
Enter password:
 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
 

 出現的問題是:找不到mysql.sock,如果你可以運行

find / -name mysql.sock 

這條命令,並且能查到結果的話,只需將查到的結果做一個軟連接到/tmp目錄下即可解決(網上都是這麼解決的)。

 

但是,我執行了這條語句之後,並沒有任何反應,沒有找到mysql.sock文件。

在這之前,需要明白mysql.sock這個文件有什麼用?

連接localhost通常通過一個Unix域套接字文件進行,一般是/tmp/mysql.sock。如果套接字文件被刪除了,本地客戶就不能連接。這可能發生在你的系統運行一個cron任務刪除了/tmp下的臨時文件。

如果你因為丟失套接字文件而不能連接,你可以簡單地通過重啟伺服器重新創建得到它。因為伺服器在啟動時重新創建它。

如果和我一樣,重啟伺服器還是沒有任何變化,你可以先執行下麵的語句:

# mysql -uroot -h 127.0.0.1 -p 

不出意外,這句話應該是可以執行的,你現在不能用套接字建立連接因為它不見了,所以可以建立一個TCP/IP連接
如果套接字文件被一個cron任務刪除,問題將重覆出現,除非你修改cron任務或使用一個或使用一個不同的套接字文件,我的解決辦法是重新指定一個不同的套接字,或者說,我現在沒有mysql.sock文件,所以我要想辦法生成一個。

首先,更改my.cnf文件,我的伺服器中的目錄為/etc/my.cnf,如果沒有的話可以用find去查找,

 

 

 

接下來就是保存退出,然後確保這個目錄存在,並且將這個目錄的許可權修改一下

# chmod 777 /var/lib/mysql

準備步驟做好,然後就是mysql和mysqld服務重啟

# service mysql restart
 
# service mysqld restart

 

 

我在重啟mysqld服務的時候,重啟失敗了,顯示如下:

 
root@iZufkfljcZ:~# service mysqld start
 
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalc
 
tl -xe" for details.

這個時候,提示可以輸入systemctl status mysqld.service去查看具體的失敗原因,於是:

****************************************************************************************

root@iZufkfljcZ:~# systemctl status mysqld.service
● mysqld.service - LSB: start and stop MySQL
  Loaded: loaded (/etc/init.d/mysqld; bad; vendor preset: enabled)
  Active: failed(Result: exit-code) since 三 2017-12-20 10:38:30 CST; 45s ago
Docs: man:systemd-sysv-generator(8)
 Process: 2154 ExecStart=/etc/init.d/mysqld start (code=exited, status=1/FAILURE)


12月 20 10:38:29 iZufkfljcZ systemd[1]: Starting LSB: start and stop MySQL...
12月 20 10:38:29 iZufkfljcZ mysqld[2154]: Starting MySQL
12月 20 10:38:29 iZufkfljcZ mysqld_safe[2689]:Logging to '/var/log/mysql/error.log'.
12月 20 10:38:29 iZufkfljcZ mysqld_safe[2693]:Directory '/var/run/mysqld' for UNIX socket file don't exists.
12月 20 10:38:30 iZufkfljcZ mysqld[2154]: . * The server quit without updating PID file (/var/run/mysqld/mysqld.pid).
12月 20 10:38:30 iZufkfljcZ systemd[1]: mysqld.service: Control process exited, code=exited status=1
12月 20 10:38:30 iZufkfljcZ systemd[1]: Failed to start LSB: start and stop MySQL.
12月 20 10:38:30 iZufkfljcZ systemd[1]: mysqld.service: Unit entered failed state.
12月 20 10:38:30 iZufkfljcZ systemd[1]: mysqld.service: Failed with result 'exit-code'.

 

****************************************************************************************

根據提示可知,/var/run/mysqld目錄不存在,也就是說mysqld服務重啟需要這個目錄,那就建一個吧:

root@iZufkfljcZ:~# mkdir /var/run/mysqld
 
root@iZufkfljcZ:~# chmod 777 /var/run/mysqld/
 
root@iZufkfljcZ:~# service mysqld start
 
root@iZufkfljcZ:~#

 建完目錄後,重新運行mysqld服務,發現重啟成功了,那麼我們再來看看為什麼剛纔要建這個目錄呢?打開這個目錄看看:

root@iZufkfljcZ# ls /var/run/mysqld
 
mysqld.pid mysqld.sock mysqld.sock.lock

發現了一個熟悉的東西,mysqld.sock,但是這個是不是我們需要的東西呢?不管他,先用這個sock文件登下mysql看看行不行:

 root@iZufkfljcZ:/var/run/mysqld# mysql -uroot -p -S /var/run/mysqld/mysqld.sock
 
Enter password:
 
Welcome to the MySQL monitor. Commands end with ; or \g.
 
Your MySQL connection id is 4
 
Server version: 5.7.20-0ubuntu0.16.04.1 (Ubuntu)
 
 
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
 
 
Oracle is a registered trademark of Oracle Corporation and/or its
 
affiliates. Other names may be trademarks of their respective
 
owners.
 
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql>

  

這麼一運行,發現好像可以了,那接下來好辦了,我們把之前改的配置改回來就行了,之前的目錄應該是/tmp/mysql.sock,我們可以建立一個軟連接連上去就可以了,

 
root@iZufkfljcZ:~# ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
 
root@iZufkfljcZ:~# ls /tmp/
 
mysql.sock

 這樣,tmp目錄下就有了my.cnf配置文件中需要的mysql.sock文件了,然後把my.cnf改回就行了,

 

 

 


到此為止,我們的mysql應該已經完全修複了,那麼我們再測試一下吧:

 OK,搞定收工,用了快一天時間在解決這個問題上,感覺收穫還是挺多的,Linux的學習任重而道遠啊!


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

-Advertisement-
Play Games
更多相關文章
  • 背景 習慣使用markdown的人應該都知道Typora這個神器,它非常簡潔高效。雖然博客園的線上markdown編輯器也不錯,但畢竟是網頁版,每次寫東西需要登錄系統-進後臺-找到文章-編輯-保存草稿。。。非常難受。。。 但是使用Typora來寫的話,文章圖片又是個問題,本地寫完粘貼到網站上,圖片全 ...
  • 一、Linux入門概述 1.1 概述 Linux內核最初由芬蘭人Linus Torvalds在赫爾辛基大學就讀時處於個人愛好編寫的。 Linux是一套免費使用且自由傳播的類Unix操作系統,是一個基於POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操作系統。Linux能運行主要的Unix ...
  • 記一次winserver安裝jdk+tomcat 準備軟體: jdk-8u241-windows-x64 apache-tomcat-8.5.46-windows-x64 一、安裝java 1、安裝jdk-8u241-windows-x64.exe,一路next,直接預設安裝即可,也可選擇安裝在特定 ...
  • #include <Windows.h> #include <stdio.h> #include <tchar.h> #include <assert.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR ...
  • 這個最大路徑長度是為了方便程式編寫?還是說底層的文件系統就只能支持這麼長的路徑呢?本文為你揭開謎底 ...
  • Dockerfile是一個文本文件,記錄了鏡像構建的所有步驟。 ...
  • 在平時開工作發中,當遇到 SQL 語句格式混亂、欄位又比較多的時候,真是讓人狂抓! 幸好,最近發現了一款好用的T-SQL格式化工具:Poor Man's T-SQL Formatter。該工具用於格式化SQL語句,具有簡單、強大、免費的特點,該工具一般是作為SSMS、Notepad++ 、VS Co ...
  • 目前CSDN,博客園,簡書同步發表中,更多精彩歡迎訪問我的gitee pages Hadoop完全分散式運行模式 步驟分析: 準備3台客戶機(關閉防火牆、靜態ip、主機名稱) vim /etc/sysconfig/network 三台機器各自的配置分別為HOSTNAME=hadoop101;HOST ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...