联网状态下,CentOS 7 是可以直接通过 yum 命令在线安装 MySQL 的,但通常会因为网速限制和连接不稳定而出现超时现象,导致安装失败,此时,本地安装就要方便地多。由于不是经常安装,所以作简单记录,供以后参考。
1. 准备工作
环境:
- CentOS 7 最小化安装虚拟机(已禁用默认的 base yum 源)
- 基于 CentOS-7-x86_64-Everything-1611.iso 的本地 yum 源
- 下载文件目标地址:
/root/yumrepo/mysql
1.1 获取 MySQL 的 yum repository 及主要 rpm 包
1.1.1 获取 MySQL yum repository
Tip:
上面使用的当前官网最新的 yum repository,下面介绍的为个人本机的版本,由于操作完全一样,故不再重新下载。
由于本人使用的是虚拟机,所有文件的下载都是通过主机完成再传输到虚拟机上的,如果是直接使用 CentOS 系统,可以通过 wget 命令来完成下载(前提是主机可以联网并且安装了 wget 相关插件包),具体不再说明。
# 安装
yum -y localinstall mysql57-community-release-el7-9.noarch.rpm
# 查看是否安装成功
yum reoplist enabled | grep mysql # 匹配表达式可以更具体:"mysql.*-community.*"
1.1.2 获取 rpm 包
下载地址:http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
选择需要的进行下载,主要有如下 5 个:
- mysql-community-client-5.7.17-1.el7.x86_64.rpm
- mysql-community-common-5.7.17-1.el7.x86_64.rpm
- mysql-community-libs-5.7.17-1.el7.x86_64.rpm
- mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm
- mysql-community-server-5.7.17-1.el7.x86_64.rpm
Tip:
官网除了提供 yum repository 的下载,同时还提供了 rpm 的完整打包下载。
如果觉得上述方法过于麻烦,可以使用官网的 tar 包,下载、解压即可得到上述包。
1.2 制作本地 yum 源
1.2.1 修改配置文件
在使用 yum localinstall
命令安装完 MySQL yum repository 后,会多出 /etc/yum.repos.d/mysql-community.repo
这样一个配置文件,修改此配置:
- 它提供了多个版本的 mysql yum 安装源,其中默认生效(enabled=1)的为与
mysql57-community-release-el7-11.noarch.rpm
一致的 5.7 版本,其他的如果看着乱可以直接删除。 - 它除了提供 server 的安装源,还提供了 connectors、tools 等其他工具,此处并不需要,可以直接设置为不生效(enabled=0)甚至删除(不建议)。
- 修改需要的 mysql57-community
- baseurl 为本地路径:
file:///root/yumrepo/mysql/
- gpgcheck 为 0
- 注释 gpgkey
- baseurl 为本地路径:
最终效果如下:
1.2.2 建立本地仓库索引
/root/yumrepo/mysql/
中目前只有 rpm 包,还不能使用 yum 进行安装,需要使用 createrepo dir
命令生成 yum 的索引。
- 使用另一个本地安装源(CentOS-7-x86_64-Everything-1611.iso)安装
createrepo
包 - 使用
createrepo /root/yumrepo/mysql/
命令为对应目录下文件生成 yum 索引
2. 使用 yum 安装 MySQL
经过上面的配置,现在系统中有两个本地 yum 源:
- 上面主要配置的 mysql-community 的 yum 源,用于安装 mysql 相关的主要包
- 基于 CentOS-7-x86_64-Everything-1611.iso 的 yum 源,用于安装 mysql 包依赖的相关基包
运行如下命令安装 mysql-community-server:yum -y install mysql-community-server
,由于包都是本地的,所以基本 2~3 分钟就可安装完成,出现类似如下提示即为安装成功:
3. MySQL 初始化配置
3.1 启动并查看 MySQL 状态
systemctl start mysqld
systemctl status mysqld
3.2 连接并配置
3.2.1 连接
MySQL 安装完成之后,在 /var/log/mysqld.log
文件中给 root 用户生成了一个临时密码。
使用临时密码即可成功登陆 mysql -uroot -p
。
3.2.2 修改密码
MySQL 5.7 默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位,否则会提示 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
错误。
由于是个人开发,并不需要复杂密码,在 my.cnf 文件中添加如下配置禁用即可:validate_password = off
。修改配置文件需要重启服务才能生效,所以此处先按照它的要求修改密码,免得重启后还要输那个复杂的临时密码。
修改密码:set password for 'root'@'localhost' = password('MyNewPasswd1!');
3.2.3 修改配置文件
配置文件地址:/etc/my.cnf
,主要修改如下:
- 设置字符集:
character_set_server=utf8
- 禁用密码策略:
validate_password=off
3.2.4 添加用户远程访问权限
默认只允许 root 帐户在本地登录,如果要在其它机器上连接 MySQL,必须修改 root 允许远程连接,或者添加一个允许远程连接的帐户。
由于是个人开发使用,直接为 root 用户开启远程访问的权限即可。
grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option;
flush privileges;
说明:
*.*
:代表所有数据库中的所有表%
:代表任意 ip,也可具体指定
以上操作完成后,如仍无法远程连接 MySQL,就需要修改系统的防火墙配置,常见有如下两种解决方法:
- 禁用防火墙,个人开发推荐,防火墙总是会引发各种问题:
systemctl stop firewalld
- 为对应服务开启指定端口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent && firewall-cmd --reload