初次安装Mysql5.7以上版本后初始root密码找不到的问题

mysql5.7新增的特性中主要的一方面就是极大增强了安全性,安装Mysql后默认会为root@localhost用户创建一个随机密码,这个随机密码在不同系统上需要使用不同方式查找,否则无法登录mysql并修改初始密码。

以下以Centos 7为例介绍如何找到初始的随机密码。

在低于Mysql 5.7.6的版本上,Mysql是使用mysql_install_db命令初始化数据库的,该命令会在安装Mysql的用户根目录下创建一个.mysql_secret文件,该文件记录了初始化生成的随机密码,用户可使用改密码登录Mysql并重新修改密码。

对于Mysql 5.7.6以后的5.7系列版本,Mysql使用mysqld –initialize或mysqld –initialize-insecure命令来初始化数据库,后者可以不生成随机密码。但是安装Mysql时默认使用的是前一个命令,这个命令也会生成一个随机密码。改密码保存在了Mysql的日志文件中。

在Centos 7系统上使用rpm命令安装Mysql后,mysql的配置文件是/etc/my.cnf,打开该文件,可以看到mysql的datadir和log文件等的配置信息,如下:

datadir=/var/lib/mysql

log-error=/var/log/mysqld.log

打开/var/log/mysqld.log文件,搜索字符串A temporary password is generated for root@localhost:,可以找到这个随机密码,通常这一行日志在log文件的最初几行,比较容易看到。

使用找到的随机密码登录mysql,首次登录后,mysql要比必须修改默认密码,否则不能执行任何其他数据库操作,这样体现了不断增强的Mysql安全性。


不兼容的更改:MySQL的部署安装使用mysql_install_db,现在默认是安全的。下面的更改已被实现并成为默认部署特性:

在安装的过程里,将仅创建一个root账户——’root’@’localhost’,同时将自动生成一个随机密码给它,并标记此密码已过期。MySQL管理员必须使用随机密码登陆root账户,并使用SET PASSWORD去设置一个新的密码。(随机密码可以在运行安装脚本的有效用户其主目录中的.mysql_secret文件中找到。


 

CentOS系统用yum安装MySQL的朋友,请使用 grep “temporary password” /var/log/mysqld.log 命令,返回结果最后引号后面的字符串就是root的默认密码。

(如果不存在/var/log/mysqld.log文件,请确保您已经启动过一次MySQL服务。CentOS 7启动MySQL服务的命令是:systemctl start mysqld.service

sudo mysql_install_db

grep “temporary password” /var/log/mysqld.log

sudo find / -name .mysql_secret

mysql -uroot -p

SET PASSWORD = PASSWORD(‘你的新密码’);