mysql+linux+无法启动服务无法启动不了_Linux实例中MySQL服务常见的无法启动或启动异常处理...
概述
本文介紹了在Linux實例中,MySQL常見的無法啟動或啟動異常處理方法。
詳細描述
常見問題處理描述,目錄如下。
提示:MySQL錯誤日志通常記錄在/alidata/log/mysql/error.log文件下。
MySQL配置文件my.cnf權限問題導致無法啟動,錯誤提示“World-writable config file '/etc/my.cnf' is ignored”
問題描述
Linux實例的MySQL無法啟動,報如下錯誤:
問題分析
查看MySQL錯誤日志發現如下錯誤(提示 MySQL 庫的 host 表無法打開)。
查看/etc/my.cnf配置文件。
到MySQL數據庫所在目錄查看表是否存在。
發現MySQL庫的host表是存在的,那為什么會提示不存在呢?
問題應該出在/etc/my.cnf文件上,從第一個截圖也可以看到警告信息(/etc/my.cnf被忽視)
查看文件權限。
原來文件權限被設置成777,因安全問題導致被MySQL忽視,所以去查詢默認的數據庫存放路徑,沒有MySQL庫的host表導致啟動失敗。
解決辦法
將/etc/my.cnf權限修改成644,然后啟動MySQL即可。
Binlog 丟失導致無法啟動,錯誤日志: File './mysql-bin.000001' not found
問題描述
清理磁盤空間時刪除了全部binlog日志,導致MySQL無法啟動。
MySQL的errorlog里面可以看到錯誤信息。
解決辦法
有以下兩種解決方法,步驟如下。
編輯/etc/my.cnf,找到log-bin=mysql-bin,在前面加#將其注釋暫時關閉binlog,保存修改后啟動MySQL服務。
提示:my.cnf配置文件路徑以實際調用路徑為準
通過清理Binlog索引文件解決,清理命令如下,完清理后啟動MySQL服務。
echo " " > mysql-bin.index
注:也可以通過vim編輯進行清理。
Binlog無法讀取導致無法啟動,錯誤日志:Failed to open log (file './mysql-bin.000001', errno 13)
問題描述
MySQL 無法啟動報錯“Starting MySQL…The server quit without updating PID file [FAILED]a/server/mysql/data/test.pid).”。并且查看MySQL的錯誤日志會提示“110711?00:00:00?[ERROR]?Failed?to?open?log?(file?'./mysql-bin.000001',?errno?13)”
問題原因
Binlog日志無法去讀,一般由于磁盤空間滿,或者權限不正確導致。
解決辦法
執行如下命令查詢磁盤空間。
df -h
查看磁盤空間沒有滿,則需要ls命令檢查文件權限。
執行如下命令,修改文件權限。
chmod 660 mysql-bin.000001chown mysql.mysql mysql-bin.000001
修改完成,確認正常啟動MySQL。
不能創建PID導致無法啟動,錯誤日志“Can't start server: can't create PID file: No such file or directory”
問題描述
MySQL 啟動報錯信息如下。
Starting mysqld (via systemctl): ?Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details、?[FAILED]
問題原因
MySQL服務在啟動的時候,不能創建PID文件。
解決方法
使用systemctl status mysqld.service和journalctl -xe查看服務啟動失敗的原因。
如果mysqld目錄終端看一下是否存在,如果不存在,執行如下命令,手動創建。
mkdir -p /var/run/mysqld/
再次嘗試啟動MySQL服務,報錯如下。
Starting mysqld (via systemctl): ?Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details. [FAILED]
查看MySQL的告警日志類似如下。
2016-01-20T10:28:37.183387Z 0 [ERROR] /usr/sbin/mysqld: Can’t create/write to file ‘/var/run/mysqld/mysqld.pid’ (Errcode: 13 - Permission denied)2016-01-20T10:28:37.183431Z 0 [ERROR] Can’t start server: can’t create PID file: Permission denied160120 18:28:37 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended160120 18:32:06 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
由于權限不正確,/var/run/mysqld/的屬主和屬組還是root,MySQL并不能在其中創建文件后修改該目錄的屬主和屬組。
執行如下命令,修改mysqld目錄屬性。
chown mysql.mysql /var/run/mysqld/
執行如下命令,重啟mysqld。
/etc/init.d/mysqld
不能創建臨時文件導致無法啟動,錯誤日志“mysqld: Can't create/write to file '/tmp/ibfguTtC' (Errcode: 13)”
問題描述
MySQL啟動失敗,錯誤日志“mysqld: Can't create/write to file '/tmp/ibfguTtC' (Errcode: 13)”。
解決辦法
使用命令ll -d /tmp命令檢查目錄權限。
使用chmod 1777 /tmp設置為正確權限。
重啟MySQL。
MySQL 服務無法識別導致無法啟動,錯誤提示:mysqld: unrecognized service
問題描述
執行MySQL啟動命令service mysqld start時,提示“mysqld: unrecognized service(未識別的服務)”。
問題原因
因為service命令是通過/etc/init.d啟動服務目錄來調用的,所以我們需要看一下/etc/init.d是否存在mysqld這個服務,使用find /etc/init.d/ -name mysqld命令來查找,發現沒有mysqld這個文件了。
解決辦法
需要將這個文件復制到/etc/init.d/目錄下,改名為mysqld,并且賦予這個文件可執行權限。
最后通過命令chkconfig —add mysqld添加開機自動啟動服務。
使用service mysqld start啟動成功。
MySQL配置了過大的內存導致無法啟動,錯誤提示“InnoDB: Cannot allocate memory for the buffer pool”
問題描述
MySQL啟動時報錯,查看錯誤日志有“[ERROR] InnoDB: Cannot allocate memory for the buffer pool(不能從緩存池中分配給innodb引擎需要的內存)”。
解決辦法
需要調整MySQL配置文件my.cnf中的innodb_buffer_pool_size和key_buffer_size的大小設置,適當的調大內存分配,一般調整為系統內存的一半。
先使用free -m查看下系統內存大小,查看是1G內存。
通過vi /etc/my.cnf,調整innodb_buffer_pool_size和key_buffer_size各為500M。
注意:my.cnf以實際配置文件路徑為準。
重啟MySQL服務使其生效。】
MySQL啟動參數過多導致無法啟動,錯誤提示“Too many arguments (first extra is 'start')”
問題描述
Linux實例系統安裝MySQL,啟動的方式有多種,如果輸入mysqld start —user=mysql 啟動后,出現報錯:Too many arguments (first extra is 'start')。
問題原因
這是因為啟動MySQL的時候參數過多導致。
解決辦法
通過直接輸入/路徑/mysqld —user=mysql的方式啟動,如下所示。
MySQL目錄權限問題導致無法啟動,錯誤提示“File './mysql-bin.index' not found (Errcode:13 - Permission denied)”
問題描述
MySQL啟動報錯,錯誤日志如下圖所示。
問題原因
提示的異常為文件屬性權限異常導致。
解決方法
查看MySQL服務下的data目錄,確認mysql-bin.index的權限是否正常。
正常情況下data目錄下文件的屬主和屬組都應該是mysql,如果不是請修改正確的文件屬性權限,并重啟MySQL。
提示:如果對MySQL服務配置文件的屬性不清楚,可以通過對比正常的MySQL主機對比了解。
MySQL未初始化導致無法啟動,錯誤提示“can't open the mysql.plugin table”
問題描述
MySQL服務啟動時錯誤提示如下。
ERROR! MySQL manager or server PID file could not be found!
Starting MySQL. ERROR! Manager of pid-file quit without updating file.
問題原因
查看錯誤日志提示“can't open the mysql.plugin table ,please run mysql_upgrade to create it”。
解決辦法
執行如下命令,指定datadir與basedir進行初始化啟動。
/alidata/server/mysql-5.1.73/scripts/mysql_install_db —user=mysql —datadir=/alidata/server/mysql/data —basedir=/alidata/server/mysql-5.1.73/
注意:以現場實際MySQL安裝路徑為準。
MySQL啟動成功但未監聽端口
問題描述
MySQL啟動成功,使用ps -ef |grep mysql可以看到進程,也可以在服務器登錄,但是使用netstat -antp| grep 3306命令可以看到沒有監聽端口。
問題原因
配置文件中使用了skip-networking選項功能,該選項的作用是不監聽端口,同主機的用戶可以通過sockets進行鏈接。外部主機由于沒有監聽端口,將無法連接。
解決方法
查看MySQL配置文件,確認端口當前MySQL端口號。
通過vim編輯MySQL配置文件將skip-networking選項注釋掉或刪除,重啟MySQL即可看到端口監聽了。
MySQL服務ibdata1權限問題導致無法啟動,錯誤日志“InnoDB Operating system error number 13 in a file operation”
問題描述
mysql啟動提示update pid失敗提示“Starting MySQL. ERROR! Manager of pid-file quit without updating file.”。同時錯誤日志中記錄“InnoDB Operating system error number 13 in a file operation”,如下圖所示。
問題原因
操作系統訪問文件/usr/local/mysql/var/idata1無權限導致。
解決辦法
查看權限,確認MySQL服務沒有訪問權限。系統顯示類似如下。
調整為MySQL服務可以訪問的權限,比如777,或者是調整屬帳號為mysql,完成后正常重啟動MySQL。
磁盤空間滿導致MySQL無法啟動
問題描述
啟動MySQL報錯提示為“ERROR! MySQL manager or server PID file could not be found! Starting MySQL. ERROR! Manager of pid-file quit without updating file.”。并且查看下MySQL錯誤日志提示如下圖所示。
問題原因
MySQL日志文件占用過大磁盤空間,磁盤空間不足導致啟動報錯。
解決辦法
執行如下命令,查看當前磁盤使用情況。
df -h
系統顯示類似如下。
執行如下命令,查看當前所有磁盤空間中大于100M的文件。
find / -size +100M
系統顯示類似如下。
確認MySQL日志占用過大磁盤空間,且該日志文件無特殊需求時,直接刪除即可。
進程殘留導致MySQL無法啟動
問題描述
MySQL啟動失敗,錯誤提示“Starting MySQL. ERROR! Manager of pid-file quit without updating file.”? 。
問題原因
使用ps -A | grep mysqld命令 ,發現mysqld和mysqld_safe進程殘留,進程ID分別是994和1221。
提示:進程ID在不同服務器環境中可能不同,請根據實際情況為準。
解決辦法
通過kill命令,結束兩個進程,重啟MySQL,并確認成功啟動。
MySQL服務自動停止
問題描述
服務器上安裝的MySQL,會出現自動停止的情況。
問題原因
出現這種現象,通常是服務器的內存不足導致的。
解決辦法
執行如下命令,查看服務器的系統日志/var/log/messages文件,分析服務器日志來分析。
tail /var/log/messages
系統顯示類似如下。
注:看下在MySQL自動停止的時間段內,有什么異常的日志信息,如果日志有提示“Out of memory”就可以判定,是服務器的內存使用不足,導致系統自動殺死的MySQL的進程。
最后可以通過升級服務器的內存可以解決。
適用于
云服務器 ECS
總結
以上是生活随笔為你收集整理的mysql+linux+无法启动服务无法启动不了_Linux实例中MySQL服务常见的无法启动或启动异常处理...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 合肥天鹅湖万达广场机器人_合肥租房价位及
- 下一篇: debian查询端口进程_Linux查看