一,許可權問題導致mysql無法啟動,在linux中許可權是個很重要的東西,所以大多資料mysql無法啟動都與
許可權有問題
錯誤提示
World-writable config file ‘/opt/lampp/etc/my.cnf’ is ignored
[ERROR] Fatal error: Can’t change to run as user ’mysql’ ;
Please check that the user exists!
昨天的的xampp問題集錦中,已經解決了一些問題,不過今天重啟又出現問題,廢話不多說,下面三解決
方案。
進入lampp/etc/把my.cnf的許可權改為755 重啟lampp,正常。同理,把phpmyadmin的許可權也改成755即可。
至此,問題全部解決。
PS:出於安全考慮,xampp不允許將mysql和phpmyadmin的許可權範圍設為最大,在安裝時注意不要把整個
lampp目錄的許可權設為777。
二,Ubuntu 升級後 MySQL 無法啟動
升級結束後我開始測試我的程式。我選擇了手動建立資料庫,但在運行 MySQL 用戶端的時候,卻出現了
錯誤資訊:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket
‘/var/run/mysqld/mysqld.sock’ (2)
無論我用普通帳號還是 root 帳號都出現了這種問題。開始時我以為是個小問題,於是重啟 MySQL,結
果發現啟動不起來了,運行 service mysql restart 的結果是:
| 代碼如下 |
複製代碼 |
start: Job failed to start |
這時,我意識到可能是 MySQL 系統出問題了,去瀏覽器訪問我的 blog,果然提示資料庫連接不正常。
我上網搜尋,確實有人有過這種經曆,但原因是因為硬碟空間滿了,清除出一些空間來就解決了。還有
人說跟 /var/run/mysqld 的許可權有關,我試過修改許可權,但仍然不管用。
這時我有點著急,因為我的資料並沒有備份。系統升級這種事我做過幾次,都很正常,從來沒有出現過
這種情況。如果我又資料庫的備份,我大不了重新做一次系統,然後把資料匯入回去就行了。現在卻沒
辦法了。我嘗試著備份了 /var/lib/mysql 目錄後刪除 MySQL,再重新安裝 MySQL,結果還是不行。
我查看了 /var/log/mysql/error.log,結果裡面相關的內容是:
| 代碼如下 |
複製代碼 |
120514 11:16:44 [Note] Plugin 'FEDERATED' is disabled. 120514 11:16:44 [Note] Plugin 'InnoDB' is disabled. 120514 11:16:44 [ERROR] Unknown/unsupported storage engine: InnoDB 120514 11:16:44 [ERROR] Aborting 120514 11:16:44 [Note] /usr/sbin/mysqld: Shutdown complete |
我看了半天也沒怎麼看出門道來,InnoDB 我在剛開始安裝 MySQL 之後馬上就關上了啊,普通的網站根
本用不到 InnoDB,而且它又十分的耗記憶體,因此這是 VPS 的記憶體最佳化必做步驟之一。
我只好又查其它的文檔,也做了不少嘗試。比如說,設定檔中的 default-character-set 選項到期了
,新的選項是 character-set-server,等等。我改了一些這種選項,但總是沒有效果。
最後,我因為錯誤記錄中提到了 InnoDB,就抱著試一試的心情,把設定檔中的 skip-innodb 這一行
給注釋掉了,結果啟動 MySQL,竟然成功了。我無論如何也想不到竟然會在這個地方出問題。
解決了問題後我成功的讓我的程式可以訪問 MySQL 資料庫了。然後我想找找為什麼關掉 InnoDB 會讓
MySQL 無法啟動。當我檢查我為了這個程式所建立的資料庫時,驚訝的發現了這個資料表竟然使用了
InnoDB 引擎,而不是我以為的 MyISAM。抱著這種猜想,我搜尋了 Google,果然發現了,從版本 5.5
之後,MySQL 預設的引擎成了 InnoDB。
三,修改編碼後導致mysql無法啟動
Ubuntu 12.04 MySQL改utf-8 啟動不了
| 代碼如下 |
複製代碼 |
default-character-set=utf8 報錯: start mysql. The restart(8) utility is also available. start: Job failed to start |
這麼寫OK了:
| 代碼如下 |
複製代碼 |
On MySQL 5.5 I have in my.cnf [mysqld] init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' character-set-server=utf8 collation-server=utf8_unicode_ci skip-character-set-client-handshake |