一、环境介绍

操作系统: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/

yum本地镜像源有很多版本吗_MySQL


yum本地镜像源有很多版本吗_MySQL_02

#下载发布包
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安装

yum本地镜像源有很多版本吗_centos_03

#导入新密钥,然后再次执行安装命令
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

因此我们可以通过使用生成的临时密码登录,再为超级用户帐户设置自定义密码:

yum本地镜像源有很多版本吗_yum本地镜像源有很多版本吗_04

#使用生成的临时密码登陆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 软件,有的话继续删除。