环境准备:CentOS7,以下包括mysql5和mysql8 rpm
1.安装mysql5 rpm
下载mysql rpm如:
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
然后进行repo的安装:
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
执行完成后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo mysql-community-source.repo
yum install mysql-server
启动mysql服务
systemctl start mysqld
获取安装时的临时密码(在第一次登录时就是用这个密码):
grep 'temporary password' /var/log/mysqld.log
用临时密码登录mysql root用户
mysql -u root -p
mysql> select user,host,password from mysql.user;
查询用户的密码,都为空,用下面的命令设置root的密码为root
mysql> set password for root@localhost=password('root');
mysql> exit
此处新密码登录
mysql -u root -p
给root用户授权、开启远程并刷新权限
mysql> grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
mysql> flush privileges;
2.安装mysql8 rpm
有时候需清空以前的mysql
rpm -qa | grep -i mariadb
rpm -qa | grep -i mysql
rpm -ev mysql-xxx 删除已经安装的包
rpm -ev mysql-xxx --nodeps 删除未安装的包
下载
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar
解压
tar -xvf mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar -C /usr/local
解压后8个文件,运行其中4个就可以了
rpm -ivh mysql-community-common-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.16-2.el7.x86_64.rpm
启动mysql服务
systemctl start mysqld
查看初始随机密码
cat /var/log/mysqld.log | grep password
使用root角色随机密码登录
mysql -u root -p
第一次使用随机生成的密码登录后必须修改密码,否则无法进行其他操作
alter user 'root'@'localhost' identified by 'Aaaa.111111';
修改可远程并刷新权限:
update user set host='%' where user ='root';
flush privileges;
查询3306端口是否开启yes/no
firewall-cmd --query-port=3306/tcp
开启3306-successful
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重新加载防火墙successful
firewall-cmd --reload
此时我们的远程程序已经可以直接连接MySQL了。
再修改密码长度和规则:
查询规则和长度
SHOW VARIABLES LIKE 'validate_password.%';
validate_password.policy的值0、1、2或相应的符号值LOW,MEDIUM,STRONG
0 or LOW:Length
1 or MEDIUM:Length; numeric, lowercase/uppercase, and special characters
2 or STRONG:Length; numeric, lowercase/uppercase, and special characters; dictionary file
修改规则和长度
set global validate_password.policy=LOW;
set global validate_password.length=4;
flush privileges;
然后再修改密码
alter user 'root'@'%' identified by '123456';