systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-10.noarch.rpm
sed -i '5c enabled=1' /etc/yum.repos.d/mysql-community.repo
sed -i '14c enabled=0' /etc/yum.repos.d/mysql-community.repo
yum -y install mysql-community-server
systemctl start mysqld
password=$(cat /var/log/mysqld.log |grep password | awk '{print $NF}')
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';" > /tmp/reset_password.sql
mysql -uroot -p$password --connect-expired-password < /tmp/reset_password.sql
rm -rf /tmp/reset_password.sql
systemctl restart mysqld
代码详解:
0.关闭防火墙及SELinux
1.首先到MySQL官网下载rpm源并安装
2.MySQL官方源默认配置MySQL8.0版本,需要关闭MySQL8.0的源,打开5.7的源
使用sed将对应行内容替换掉,选项-i 修改源文件
3.修改完成后直接安装MySQL
4.启动MySQL服务,MySQL首次启动后会在日志中生成初始密码
使用cat读取日志文件,然后grep过滤关键词password,在使用awk进行过滤,最后将过滤出来的密码设置为变量$password
awk使用变量$n,指当前记录的第n个字段,NF指一条记录的字段的数目,合并使用则为当前记录的最后一个字段
5.创建用于修改初始密码的sql文件
password处为你为MySQL设置的密码
MySQL密码复杂度要求:大写字母,小写字母,数字,特殊符号,不少于8位
6.使用初始密码登录 MySQL,并执行修改密码的 SQL 文件
7.删除临时的sql文件
8.重启MySQL服务
注:如需安装8.0版本,下载rpm源后跳过步骤2中的修改配置文件即可