一、环境介绍
操作系统:CentOS 7
MySQL:5.7
二、设置阿里云yum源
阿里云CentOS 镜像地址:https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11REy9PF
#1. 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#2. 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#3. 运行 yum makecache 生成缓存
yum makecache
#4. 安装wget(如果有了就不需要安装了)
yum -y install wget
三、安装MySQL
3.1 添加 MySQL Yum 存储库
官方安装文档:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/ 下载地址:https://dev.mysql.com/downloads/repo/yum/
#下载发布包
wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
#安装发布包
rpm -ivh mysql80-community-release-el7-6.noarch.rpm
#查看 MySQL Yum 存储库中的所有子存储库,并查看其中哪些子存储库已启用或禁用
yum repolist all | grep mysql
选择默认安装的版本,默认的是8.0 版本,这里需要禁用掉启动5.7
- 可以使用yum-config-manager命令,来禁用 8.0 系列的子存储库并启用 5.7 系列的子存储库
- 也可以通过手动编辑 /etc/yum.repos.d/mysql-community.repo 文件来选择系列
#安装 YUM 管理工具包,此包提供了 yum-config-manager 命令工具
yum -y install yum-utils
#禁用 8.0 系列的子存储库并启用 5.7 系列的子存储库
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
#验证是否已启用和禁用正确的子存储库
yum repolist enabled | grep mysql
3.2 安装Mysql
#安装 MySQL
yum -y install mysql-community-server
如果下载速度很慢,可以先在国内mysql镜像下载并上传到yum的缓存路径,再用yum安装。
- yum下载的缓存文件路径:/var/cache/yum/x86_64/7/mysql57-community/packages/
- 国内的镜像站:
- 可以使用scp命令进行文件上传:
scp [文件名] [用户名]@[服务器ip]:[目标路径]
如果提示:获取 GPG 密钥失败:[Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022"
- 安装对应密钥后,再重新执行yum安装
#导入新密钥,然后再次执行安装命令
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
3.3 启动Mysql
#启动 MySQL 服务器
systemctl start mysqld
#检查 MySQL 服务器的状态
systemctl status mysqld
3.4 设置root用户密码
MySQL 服务器初始化(从 MySQL 5.7 开始):在服务器初始启动时,假设服务器的数据目录为空,会发生以下情况:
- 服务器已初始化。
- 在数据目录中生成 SSL 证书和密钥文件。
- validate_password 插件 已安装并启用。
- 创建了一个超级用户帐户’root’@‘localhost’ 。超级用户的密码已设置并存储在错误日志文件中。要显示它,请使用以下命令:grep ‘temporary password’ /var/log/mysqld.log
因此我们可以通过使用生成的临时密码登录,再为超级用户帐户设置自定义密码:
#使用生成的临时密码登陆mysql
mysql -uroot -p'-fAjmulxu8Ny'
#mysql5.7以后对密码的强度是有要求的,必须是字母+数字+符号组成的,如果想设置简单密码
#例如‘root’,需要做以下设置
#设置密码长度最低位数
set global validate_password_length=4;
#设置密码强度级别
set global validate_password_policy=0;
#validate_password_policy有以下取值:
# 0 or LOW:Length
# 1 or MEDIUM:numeric, lowercase/uppercase, and special characters
# 2 or STRONG:Length; numeric, lowercase/uppercase, and special characters
# 默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
#设置密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
四、远程连接
远程登录还需要授权远程登录,Mysql默认不允许远程登录
另外还需要设置关闭防火墙,不关防火墙就开放3306端口
4.1 授权
#授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
命令说明:
- ALL PRIVILEGES :表示授予所有的权限,此处可以指定具体的授权权限。
- *.* :表示所有库中的所有表
- ‘root’@‘%’ : myuser是数据库的用户名,%表示是任意ip地址,可以指定具体ip地址。
- IDENTIFIED BY ‘mypassword’ :mypassword是数据库的密码。
4.2 开放3306端口 或者 关闭防火墙
iptables -t filter -I INPUT -p tcp --dport 3306 -j ACCEPT
#-t:指定给哪个表格设置
#-I:插入一条规则。如果没有指定此规则的顺序,默认是插入变成第一条规则
#INPUT:链名称
#-p:指定此规则适用于哪种数据包格式
#--dport:端口范围,限制目标的端口号码
#-j:后面接操作,主要有ACCEPT(接收)、DROP(丢弃)、REJECT(拒绝)、LOG(记录)
或者关闭linux的防火墙
#关闭
systemctl stop firewalld
#开机禁用
systemctl disable firewalld
#查看状态
systemctl status firewalld
五、卸载Mysql
5.1 查看已安装的MySQL
#查看已安装的mysql
rpm -qa|grep -i mysql
#查看所有mysql有关的软件源
yum repolist all | grep mysql
5.2 卸载MySQL
yum remove -y mysql mysql-libs mysql-common #卸载mysql
rm -rf /var/lib/mysql #删除mysql下的数据文件
rm /etc/my.cnf #删除mysql配置文件
yum remove -y mysql80-community-release-el7-6.noarch #删除mysql存储库
查看是否还有 MySQL 软件,有的话继续删除。