CentOS 7中使用rpm方式安裝MySQL 5.7後無法使用root登入解決

來源:互聯網
上載者:User

CentOS 7中使用rpm方式安裝MySQL 5.7後無法使用root登入解決

最近在CentOS 7中通過rpm方式安裝了最新版本的mysql-server 5.7 (mysql57-community-release-el7-7.noarch.rpm) ,發現安裝成功後無法使用root登入。百度google一番無果,最後在官方文檔中找到了答案。現記錄完整安裝及問題解決過程,希望能協助到其他朋友。

CentOS6.5系統下RPM包安裝MySQL5.6

CentOS 6.5下安裝MySQL 5.6.21 

《MySQL權威指南(原書第2版)》清晰中文掃描版 PDF

OS版本:

Linux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (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 wget http://repo.mysql.com/mysql57-community-release-el7-7.noarch.rpm

$ 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使用者。

度娘Google之後得到的解決方案對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登入成功。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.