在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步了。

完毕。

相关文章
相关标签/搜索