在linux下面安裝MySQL5.6管理賬號安裝失敗的解決方法

這不算什麼文章,只是爲了記錄今天下午我平白無故花費的時間。避免下次浪費一樣的時間,我仍是把今天遇到的問題和解決方法記錄下來吧。 php

首先,今天的問題能夠在mysql bug中找到: http://bugs.mysql.com/bug.php?id=63085 mysql

**************************************************************************************************************************sql

MySQL安裝例子 http://opensourcedbms.com/dbms/installing-mysql-5-6-on-cent-os-6-3-redhat-el6-fedora/ shell

conflicts with file from package mysql-libs-5.1.52-1.el6_0.1.x86_64

最新解決方法,更新於2014,4,22
數據庫

以前的解決方法會使得依賴於mysql-libs的程序沒法正常工做。如今oracle提供了新的rpm
安全

MySQL-shared-compat, 安裝此包,能夠替換掉mysql-libs,併兼容於mysql-server和mysql-client。oracle

rpm -Uvh MySQL-shared-compat-5.6.17-1.el6.x86_64.rpm

**************************************************************************************************************************工具

MySQL其實並不複雜,但自從某一個版本開始,MySQL的安裝變得愈來愈複雜。不明白他們爲何這麼作,是由於被oracle收購的緣由麼? spa

我用的是redhat,安裝的MySQL版本5.6。安裝文件爲rpm包。簡單說一下正常的MySQL rpm包的安裝流程: code

  1. redhat通常會自帶一個mysql-libs,首先要卸載它,不然安裝會衝突。
    若是有yum,能夠運行

    >yum list mysql-client
    >yum list mysql-server

    來找出安裝的mysql。
    運行

    >yum remove package-name

    來刪除mysql的包。

  2. 若是沒有yum,可使用

    >rpm -qal | grep mysql

    列出已經安裝的rpm,使用

    >rpm -e package-name

    來刪除。

  3. 最後運行命令

    >whereis mysql

    來查看還有沒有mysql的目錄,使用rm命令刪除全部遺留目錄。

  4. 使用

    >rpm -ivh mysql-package-name

    來安裝Mysql。 通常狀況必須裝的兩個包是mysql-server和mysql-client。 mysql-client提供了mysql和mysqladmin等查詢和管理工具。

  5. rpm安裝會自動調用mysql_install_db命令,爲咱們populate數據庫用戶表。這張表存在數據庫mysql中,名字叫user. rpm安裝會自動爲你建立root用戶,並隨即產生一個密碼,密碼存放在/root/.mysql_secret中。

  6. 接下來就是啓動mysql server, 可使用如下幾種命令:

    >mysqld -u mysql
    >/etc/init.d/mysql start
  7. 須要使用root來鏈接數據庫,或者使用mysqladmin來管理賬戶。而後重設你的密碼。並建立其餘用戶。每一個用戶會有多種登錄方式,remote, localhost等等。你須要爲你的賬戶制定各類登錄方式以及相應的密碼。

  8. 至此,你的mysql就配置完成了。

接下來講我遇到的問題。這個問題費了我很多時間。

當我作完上面的第4步之後,執行第5步,發現我不管用什麼賬戶,都沒法登錄到mysql中去,使用mysqladmin也必須用root登錄。因此個人root是一個無效存在。/root/.mysql_secret裏面的密碼卻是存在。這說明,rpm安裝過程當中,mysql_install_db出現了問題,多是bug。我卸載了重裝,也沒法解決問題。因而乎,我只能啓動Mysql的安全模式,去查看user表裏面到底有沒有用戶。

  1. 啓動mysql安全模式。

    #中止mysql : 
    >/etc/init.d/mysql stop
    #啓動安全模式:
    >mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
  2. 鏈接mysql。以上的模式下,mysql不會檢查用戶密碼。你能夠直接運行mysql就能鏈接。

  3. 查看user表。運行

    mysql>use mysql;
    mysql>select * from user;

    我發現這張表裏面沒有任何數據。這驗證了我以前的想法,用戶並無被populate進來。怎麼辦?只能本身給它建立一個用戶了。 

  4. 建立root用戶:

    mysql>INSERT INTO user VALUES('localhost','root',password('root'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0','0','','','N');

    分別要注意4個值,第一行的3個,和最後一行的最後一個值。第一行3個分別是用戶的方法方式,%表明任意host,也可使用ip。最後一個值"N",表明你的password是否過時,若是過時,你在登錄的時候你須要重設密碼。

  5. 至此,你有了一個root賬號。關閉安全模式,啓動正常模式,用root登錄進mysql, 接下來你就回歸正常的流程的第7步了。

完畢。

相關文章
相關標籤/搜索