Ubuntu下解決mysql stop fail的問題
最近在學習MySQL,碰到了一個mysql stop fail的問題,在這裡把碰到的問題以及解決的過程寫出來,不是這個問題有多難,而是我在解決此問題的過程中沒有發現一個行之有效解決問題的中文網頁,搞得白白浪費了很多時間。在這裡我把解決的過程寫下來,希望給後來者解決相同的問題節省點時間。好了,廢話不多說,開始進入正題。
我的作業系統環境是Ubuntu 14.04,64位,安裝MySQL過程如下:
由於更改了MySQL的設定檔,需要重啟一下MySQL,我通過下面兩個命令來stop mysql:
當然也試過網上所說的service mysql stop,然後並沒有卵用。在搜尋了多次以後,最後在一個英文的論壇中找到的解決方案。在該問題的版面也有很多的回答者給出了“方法”,只有一位給出的方法解決了我的問題。
該問題的解決過程是這樣子的:
1、以root許可權登陸mysql,執行如下的sql語句:
select User from mysql.user
看看在mysql資料庫下的user表中是不是存在一個名為:debian-sys-maint的使用者,執行上面的sql語句在我的機器上返回的結果如所示:
如果在你的查詢返回的結果集中不存在使用者debian-sys-maint,那麼你需要執行第二個步驟,如果有debian-sys-maint使用者,那麼你需要執行第三個步驟。
2、執行sql語句:CREATE USER 'debian-sys-maint‘@'localhost' identified by 'password'
我簡單解釋一下該sql語句:建立一個名為debian-sys-maint的使用者,password為該使用者使用mysql的密碼,那麼password欄位的值我們如何指定呢?是任意指定嗎?不是,password欄位的值得需要與檔案/etc/mysql/debian.cnf中的debian-sys-maint的密碼保持一致,在我的機器上/etc/mysql/debian.cnf檔案的內容如下:
3、如果執行了第二步了,那麼你就可以成功stop mysql,不需要執行第三步了。第三步的過程如下:
首先執行如下的sql語句,查看debian-sys-maint所在行的password欄位的值與/etc/mysql/debian.cnf中的debian-sys-maint所對應的password是否相同,
由於在mysql中密碼是被加密儲存的,所以我們根本無法比較兩個密碼,由於我們需要的是兩處的密碼保持一致,所以執行下面的sql語句:
update user set password=PASSWORD("password from /etc/mysql/debian.cnf") where User='debian-sys-maint'
此處password from /etc/mysql/debian.cnf為在/etc/mysql/debian.cnf檔案中debian-sys-maint所對應的密碼,大家千萬別搞錯了。
這樣就可以成功stop mysql了。
多說一句,大家平時解決問題還是多採用英文,中文的東西魚龍混雜,很多噪音,不僅不能幫你解決問題,還把帶到溝裡,白白浪費時間。