资料来源
- Linux安装MySQL使用yum
- A Quick Guide to Using the MySQL Yum Repository - 这个是MySQL官方给的文档
安装准备工作
1、下载MySQL Yum Repository(这里我的系统是Centos 7,故选择el7即可)
2、更换yum国内镜像源
开始安装
- 如果已经安装过MySQL的用户,又想重新安装,请先看一下文章后面说的
MySQL卸载
,需要先卸载干净,再来安装。
1、将下载的 MySQL YUM Repository 上传到虚拟机上(我自己是在虚拟机上安装) ,然后使用下面命令,将MySQL的yum源,添加到自己系统的yum源中去
-- mysql80-community-release-el7-5.noarch.rpm注意换成自己的文件名
-- 如果不是root用户,注意使用sudo命令
rpm -Uvh mysql80-community-release-el7-5.noarch.rpm
2、查看yum安装时,启用的mysql版本
- 命令:
yum repolist all | grep mysql
- 从下图中,我们可以看到,默认启用的是MySQL8.0版(启用:表示接下来yum安装时,就会安装启用的这些项目)
-
图中几个mysql版本说明一下:目前的安装包名中都有community表示社区版(免费)、MySQL Cluster表示集群版本、MySQL Tools这些是工具
3、切换版MySQL版本(根据自己需求启用相关选项。由于我要安装MySQL8.0,就不禁用,直接安装了)
- 说明一下:我没有尝试过禁用:MySQL Connectors Commu 和 MySQL Tools Community ,这两个安装选项。
- 我只启用/禁用过 MySQL 8.0 Community Se / MySQL 5.7 Community Se
- 故:如果是为了安装数据,按照我这个操作就可以。如果研究,可以自行尝试禁用/启用其他选项试试
# MySQL80禁用
yum-config-manager --disable mysql80-community
# MySQL5.7启用
yum-config-manager --enable mysql57-community
4、使用yum命令MySQL8.0安装:
-- 如果不是root用户,记得sudo
yum install -y mysql-community-server
- 如果安装出现错误:
获取 GPG 密钥失败:[Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022"
- 解决方案:
- 执行
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
下载GPG秘钥 - 使用
yum install -y mysql-community-server --nogpgcheck
命令安装并忽略GPG秘钥检查
- 执行
5、启动MySQL服务器,并查看mysql启用状态(注意:这里是mysqld
,不是mysql)
-- Centos 7 使用systemctl命令,Centos 6用service
systemctl start mysqld
-- 查看mysql服务启用状态(见下图)
systemctl status mysqld
6、找到MySQL的root用户密码(MySQL8.0需要先启动,否则这个文件不存在)
-- 在mysqld.log文件中,找到root用户初始密码(见下图)
cat /var/log/mysqld.log
7、修改root初始密码(必须修改初始密码,否则无法执行SQL)
-- MySQL8 密码策略:大小写字母+数字+特殊符号
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
8、修改root用户允许远程连接
-- 修改mysql数据库中user表中root用户的host为%,即可支持该用户任意IP地址远程访问
update mysql.user set host='%' where user='root';
9、Centos 7防火墙开启3306端口
# 防火墙开启3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙,使3306端口开放生效
firewall-cmd --reload
10、设置MySQL开启是否自启动
-- 先查看mysql服务是否已经开机自启动
systemctl list-unit-files | grep mysqld
-- 设置开启自启动 如果将 enable 改为 disable,那么就是关闭开启自启动
systemctl enable mysqld.service
11、解决MySQL8.0使用数据库工具连接2059错误:2059 - Authentication plugin 'caching_sha2_password' cannot be loaded:xxxx
- 执行下面SQL解决
- 说明:这里的
'root'@'%'
的%
是root用户的Host值,需要自己查询自己数据库中root用的Host值是什么
- 说明:这里的
-- 这里的 'root'@'%' 的 % 是root用户的 Host值
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
- 查询root用户的Host值:
select * from mysql.user where user='root'\G;
12、根据自己需要,修改数据库密码策略
- 修改密码策略前,不能使用root初始密码修改。即必须要先修改root初始密码,再来设置密码策略。然后再将root密码设置为简单易记的密码
- 修改密码策略是 修改MySQL的全局变量值,故MySQL服务重启后,密码策略修改的值就会失效,但是不影响已修改密码的账户
-- 查看数据全局变量中密码策略
show variables like 'validate_password%';
-- 关闭 密码不允许与用户名相同检查
set global validate_password.check_user_name=0;
-- 设置密码最小长度为4
set global validate_password.length=4;
-- 修改密码策略等级为 低
set global validate_password.policy=LOW;
13、重置root用户密码为简单密码
- 如果修改root用户的允许远程连接(即:root@%),那么重置密码时需要使用:
ALTER USER 'root'@'%' IDENTIFIED BY '你的密码';
- 可以使用
select * from mysql.user where user='root'\G;
SQL来查看root用户的Host值(见下图)
-- 重新修改root用户密码(默认root用户host为localhost)
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
-- 如果设置用户host为 %,那么使用:ALTER USER 'root'@'%' IDENTIFIED BY '你的密码';修改密码
ALTER USER 'root'@'%' IDENTIFIED BY '你的密码';
MySQL卸载
1、查看是否安装过MySQL(见下图)
# -i 表示忽略大小写
rpm -qa | grep -i mysql
2、查看MySQL服务是否开启(注意是:
mysqld
,不是mysql)
- 见下图,如果是:active(running)表示服务已开启
# 先查看MySQL服务状态
systemctl status mysqld
3、关闭MySQL服务
# 关闭MySQL服务命令
systemctl stop mysqld
# 再查看一下状态,确认关闭
systemctl status mysqld
4、卸载MySQL安装包
- 使用
yum list installed mysql*
命令,查看yum已安装的mysql相关包 - 使用
yum remove -y mysql-community-*
命令,卸载mysql
# 这里使用的 [*] 通配符
yum remove -y mysql-community-*
5、删除mysql相关文件(注意:该相关文件会删除数据的文件,故需要做好数据库备份)
# 从根目录查找mysql关键的文件
find /-name mysql
# 使用rm -rf 删除上述命令的文件
rm -rf /etc/selinux/targeted/active/modules/100/mysql
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql
rm -rf /usr/lib64/mysql
6、删除MySQL的配置文件(my.cnf)和 日志文件
- 日志文件一定要删除,否则重新安装时,root初始密码不会写进去,那么安装后就不知道root密码
# 配置文件
rm -rf /etc/my.cnf
# 日志文件(这个日志文件一定要删除,否则重新安装时,root初始密码不会写进去)
rm -rf /var/log/mysqld.log