關於linux中mysql啟動失敗的信息

本文目錄一覽:

mysql啟動錯誤

一、無法訪問系統資源

MySQL 不能訪問啟動需要的資源是造成而 MySQL 無法啟動的一個常見原因,如:文件,埠等。由於 linux 中用於啟動 mysqld 進程的 mysql 用戶通常是不能登陸的,可以使用類似下面的命令檢查文件的訪問許可權。

sudo -u mysql touch /var/lib/mysql/b

找出問題後,修改對應文件或目錄的許可權或屬主後通常可以解決問題。但有時 mysql 用戶有訪問文件和目錄的許可權,但仍然會被拒絕訪問,例如下面這個例子:

mysql system sudo -u mysql touch /home/mysql/data/a

mysql create table t1 (

id int primary key,n varchar(10

) data directory

ERROR 1030 (HY000): Got error 168 from storage engine

測試說明 mysql 用戶有這個目錄的訪問許可權,但創建文件還是失敗,這種情況讓很多人困惑,這個時候通常是 mysqld 進程的訪問被 linux 的 selinux 或 apparmor 給阻止了,大家可以看到創建的表不是在 mysql 的默認目錄下面,因此 selinux 或 apparmor 的 policy 裡面沒有包含這個目錄的訪問許可權,此時只要對應的修改 policy 就行了,當然把 selinux 或 apparmor 停了也行。

有時雖然對系統資源有訪問的許可權,但系統資源已經被佔用:

mysqld –no-defaults –console –user mysql

2020-11-03T03:36:07.519419Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 21171

2020-11-03T03:36:07.740347Z 1 [ERROR] [MY-012574] [InnoDB] Unable to lock ./ibdata1 error: 11

這個故障產生的原因是另外一個 mysqld 進程已經啟動並佔用了對應的文件。

二、參數設置錯誤

參數設置錯誤造成 MySQL 無法啟動的原因也非常常見,此時先要檢查 MySQL 啟動時會調用的參數,下面的命令可以查詢 MySQL 啟動時調用參數文件的順序:

$ mysqld –verbose –help | grep “Default options ” -A 1

Default options are read from the following files in the given order:

/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

知道了 MySQL 參數文件的調用順序,我們就可以檢查對應的參數文件,找出其中的錯誤,如果覺得參數文件的可讀性不強,可以使用下面的命令顯示 mysqld 程序將要調用的參數:

$ mysqld –print-defaults

/usr/sbin/mysqld would have been started with the following arguments:

……

注意這個命令顯示完參數後就退出,不會真正運行 mysqld。這個命令和 my_print_defaults mysqld 完全是等價的,只不過後者的顯示方式是一行一個參數。

然後開始對可疑的參數進行調試,我個人喜歡加的參數和順序如下:

1. 在 mysqld 後加上第一個參數 –no-defaults ,這個參數的作用是通知 mysqld 在啟動的時候不要讀任何參數文件;

2. 第二個參數是 –console,這個參數會把錯誤信息輸出到屏幕上,這個參數帶來的一個弊端是所有的信息都輸出到屏幕上,讓屏幕顯得比較亂,但對於我們調試卻是很方便的;

3. 第三個參數是 –log-error-verbosity=3,這個參數會顯示詳細的日誌;

4. 然後再在後面加上有把握的參數,可以一次只加一個參數,然後啟動 mysqld,採用排除法逐步找出錯誤的參數。

linux中mysql安裝完mysql啟動時報錯是怎麼回事?

1、原因:可能是/usr/local/mysql/mysql.pid文件沒有寫的許可權;

解決方法 :給予許可權,執行 「chmod 775 /usr/local/mysql/ -R」  然後重新啟動mysqld。

2、原因:可能進程里已經存在mysql進程;

解決方法:用命令「ps

-ef|grep mysqld」查看是否有mysqld進程,如果有使用「kill -9  進程號」殺死,然後重新啟動mysqld。

3、原因:可能是第二次在機器上安裝mysql,有殘餘數據影響了服務的啟動;

解決方法:去mysql的數據目錄/data看看,如果存在mysql-bin.index,就趕快把它刪除掉吧,它就是罪魁禍首了。

4、原因:mysql在啟動時沒有指定配置文件時會使用/etc/my.cnf配置文件,請打開這個文件查看在[mysqld]節下有沒有指定數據目錄(datadir);

解決方法:請在[mysqld]下設置這一行:datadir = /usr/local/mysql/data。

5、原因:skip-federated欄位問題;

解決方法:檢查一下/etc/my.cnf文件中有沒有沒被注釋掉的skip-federated欄位,如果有就立即注釋掉吧。

6、原因:錯誤日誌目錄不存在;

解決方法:使用「chown」 「chmod」命令賦予mysql所有者及許可權。

7、原因:如果是centos系統,默認會開啟selinux;

解決方法:關閉它,打開/etc/selinux/config,把SELINUX=enforcing改為SELINUX=disabled後存檔退出重啟機器試試。

8、原因:log-bin路徑錯誤;

解決方法:查看對應資料庫下的error

log,例如我的資料庫為,/usr/local/mysql/var目錄,其下的localhost.localdomain.err為錯誤日誌,只要把其下的ib_logfile*刪除即可,重啟mysql即可。

一、Linux下MySQL的啟動與停止

1、Mysql啟動、停止、重啟常用命令

a、啟動方式

(1)使用 service 啟動:

[root@localhost /]# service mysqld start (5.0版本是mysqld)

[root@szxdb etc]# service mysql start (5.5.7版本是mysql)

(2)使用 mysqld 腳本啟動:

/etc/inint.d/mysqld start

(3)使用 safe_mysqld 啟動:

safe_mysqld

b、停止方式

(1)使用 service 啟動:

service mysqld stop

(2)使用 mysqld 腳本啟動:

/etc/inint.d/mysqld stop

(3)mysqladmin shutdown

c、重啟方式

(1)使用 service 啟動:

service mysqld restart

service mysql restart (5.5.7版本命令)

(2)使用 mysqld 腳本啟動:

/etc/init.d/mysqld restart

求助linux mysql 啟動失敗

只能說看似啟動失敗,8成可能是因為你的/etc/my.cnf配置文件有問題。

解決思路:

1、請貼出mysql的錯誤日誌來errorlog,errorlog在數據目錄文件下,如果是默認的rpm安裝的好像在/var/log/mysql/下,一般通過錯誤日誌可以分析出哪裡出問題了。

2、如果找不到錯誤日誌,先mv /etc/my.cnf /tmp/my.cnf ,使用service mysql start 啟動再試試,如果能啟動,說明就是你的my.cnf的問題

linux下mysql怎麼啟動不了了

第一步:先停止所有mysql 進程

# killall -TERM mysqld

第二步:用安全模式啟動

# /usr/local/mysql/bin/mysqld_safe –skip-grant-table

註: 啟動時會報錯,而且卡在哪不動,這時你只要回車即可,然後再用空密碼就能登陸了

第三: 用空密碼登陸,修改mysql 的root 密碼

# mysql -uroot -p //登錄mysql

mysql use mysql // 選擇mysql 資料庫

mysql update user set password=password(“654123″) where user=”root”; // 更新root 密碼

mysql flush privileges; // 使修改立即生效

第四: 用你修改的密碼登陸!

原創文章,作者:ONJF,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/140555.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ONJF的頭像ONJF
上一篇 2024-10-04 00:23
下一篇 2024-10-04 00:24

相關推薦

  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29
  • Java 監控介面返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控介面返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • 使用Python爬蟲獲取電影信息的實現方法

    本文將介紹如何使用Python編寫爬蟲程序,來獲取和處理電影數據。需要了解基本的Python編程語言知識,並使用BeautifulSoup庫和Requests庫進行爬取。 一、準備…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL資料庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28
  • Python爬取網頁信息

    本文將從多個方面對Python爬取網頁信息做詳細的闡述。 一、爬蟲介紹 爬蟲是一種自動化程序,可以模擬人對網頁進行訪問獲取信息的行為。通過編寫代碼,我們可以指定要獲取的信息,將其從…

    編程 2025-04-28
  • 如何使用Python執行Shell命令並獲取執行過程信息

    本文將介紹如何使用Python執行Shell命令並獲取執行過程信息。我們將從以下幾個方面進行闡述: 一、執行Shell命令 Python內置的subprocess模塊可以方便地執行…

    編程 2025-04-28
  • Python實現身份信息模擬生成與查驗

    本文將從以下幾個方面對Python實現身份信息模擬生成與查驗進行詳細闡述: 一、身份信息生成 身份信息生成是指通過代碼生成符合身份信息規範的虛假數據。Python中,我們可以使用f…

    編程 2025-04-27

發表回復

登錄後才能評論