关于centos7中使用rpm方式安装mysql5.7版本后无法使用root登录的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于centos7中使用rpm方式安装mysql5.7版本后无法使用root登录的问题相关的知识,希望对你有一定的参考价值。

最近在centos7中通过rpm方式安装了最新版本的mysql-server 5.7 (mysql57-community-release-el7-7.noarch.rpm) ,发现安装成功后无法使用root登录。百度google一番无果,最后在官方文档中找到了答案。现记录完整安装及问题解决过程,希望能帮助到其他朋友。
 
OS版本:
Linux version 3.10.0-327.el7.x86_64 ([email protected]) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Nov 19 22:10:57 UTC 2015
 
RPM方式安装mysql-server过程如下:
 
     $ su root
     $ sudo rpm -ivh mysql57-community-release-el7-7.noarch.rpm
     $ sudo yum install mysql-server   
 
##一路yes之后等待安装成功的提示
 
到此为止,mysql57已经成功安装。现在使用root尝试登录到mysql,提示错误 ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘
发生这个问题的原因估计是rpm方式安装之后mysql使用了默认密码来初始化root用户。
 
度娘谷歌之后得到的解决方案对5.7.x版本无效。 在官网上寻找到了一些思路 https://dev.mysql.com/doc/refman/5.7/en/server-management-using-systemd.html
mysql5.7.x版本有一些新的变化,大致是 
  1. mysqld_safe已经被废弃,rpm安装包默认不会安装mysqld_safe
  2. user表中password列已经更改为authentication_string
 
在经过多次试验之后终于解决了root登录问题。解决步骤如下
 
     $ sudo systemctl stop mysqld.service
     $ sudo systemctl set-environment MYSQLD_OPTS="--user=mysql --skip-grant-tables --skip-networking"
     $ sudo systemctl start mysqld.service    
     $ mysql -u root mysql
 
     mysql > UPDATE mysql.user SET authentication_string=PASSWORD("abcdef")  WHERE user=‘root‘ and host=‘localhost‘;
     mysql > flush privileges;
     mysql > quit
 
     $ sudo systemctl unset-environment MYSQLD_OPTS
     $ sudo systemctl restart mysqld.service
 
OK,经过以上几个步骤操作之后,重新使用root登录成功。

以上是关于关于centos7中使用rpm方式安装mysql5.7版本后无法使用root登录的问题的主要内容,如果未能解决你的问题,请参考以下文章

centos7和centos6.5环境rpm方式安装mysql5.7和mysql5.6详解

Centos7 RPM方式安装部署mysql5.6

centos7上以RPM方式安装MySQL5.6

记一次 centos7.2 rpm方式安装mysql5.7.19 报错

linux(CentOS7)上安装MySql5.7

CentOS7.4下MySQL5.7.28二进制方式安装