這不算什麼文章,只是爲了記錄今天下午我平白無故花費的時間。避免下次浪費一樣的時間,我仍是把今天遇到的問題和解決方法記錄下來吧。 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
redhat通常會自帶一個mysql-libs,首先要卸載它,不然安裝會衝突。
若是有yum,能夠運行
>yum list mysql-client >yum list mysql-server
來找出安裝的mysql。
運行
>yum remove package-name
來刪除mysql的包。
若是沒有yum,可使用
>rpm -qal | grep mysql
列出已經安裝的rpm,使用
>rpm -e package-name
來刪除。
最後運行命令
>whereis mysql
來查看還有沒有mysql的目錄,使用rm命令刪除全部遺留目錄。
使用
>rpm -ivh mysql-package-name
來安裝Mysql。 通常狀況必須裝的兩個包是mysql-server和mysql-client。 mysql-client提供了mysql和mysqladmin等查詢和管理工具。
rpm安裝會自動調用mysql_install_db命令,爲咱們populate數據庫用戶表。這張表存在數據庫mysql中,名字叫user. rpm安裝會自動爲你建立root用戶,並隨即產生一個密碼,密碼存放在/root/.mysql_secret中。
接下來就是啓動mysql server, 可使用如下幾種命令:
>mysqld -u mysql >/etc/init.d/mysql start
須要使用root來鏈接數據庫,或者使用mysqladmin來管理賬戶。而後重設你的密碼。並建立其餘用戶。每一個用戶會有多種登錄方式,remote, localhost等等。你須要爲你的賬戶制定各類登錄方式以及相應的密碼。
至此,你的mysql就配置完成了。
接下來講我遇到的問題。這個問題費了我很多時間。
當我作完上面的第4步之後,執行第5步,發現我不管用什麼賬戶,都沒法登錄到mysql中去,使用mysqladmin也必須用root登錄。因此個人root是一個無效存在。/root/.mysql_secret裏面的密碼卻是存在。這說明,rpm安裝過程當中,mysql_install_db出現了問題,多是bug。我卸載了重裝,也沒法解決問題。因而乎,我只能啓動Mysql的安全模式,去查看user表裏面到底有沒有用戶。
啓動mysql安全模式。
#中止mysql : >/etc/init.d/mysql stop #啓動安全模式: >mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
鏈接mysql。以上的模式下,mysql不會檢查用戶密碼。你能夠直接運行mysql就能鏈接。
查看user表。運行
mysql>use mysql; mysql>select * from user;
我發現這張表裏面沒有任何數據。這驗證了我以前的想法,用戶並無被populate進來。怎麼辦?只能本身給它建立一個用戶了。
建立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是否過時,若是過時,你在登錄的時候你須要重設密碼。
至此,你有了一個root賬號。關閉安全模式,啓動正常模式,用root登錄進mysql, 接下來你就回歸正常的流程的第7步了。
完畢。