马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在很多 CentOS 7 的实际环境里,装 MySQL 会遇到两种截然不同的处境:服务器能连外网,直接 yum 拉包就行;服务器是内网离线机,只能靠提前下载好的 rpm 包手工装配。本文把两条路径都走一遍,包含启动服务、取初始密码、改密码、开远程访问、配字符编码,以及离线安装时的依赖顺序。
一、环境说明
- 系统:CentOS Linux release 7.6.1810 (Core)
- 数据库版本:MySQL 5.7
- 方式一:服务器有外网,通过 yum 安装。
- 方式二:服务器无外网,使用离线 rpm 包安装。
判断有没有外网,最简单的方式是 ping baidu.com;能通就走方式一,不通走方式二。
二、两法共用的前置动作:卸载 mariadb
mariadb 是 mysql 的分支,两者文件有重叠,同时装会冲突,所以装 mysql 之前必须先卸 mariadb。
rpm -qa | grep mariadb
rpm -e --nodeps 文件名
为什么必须卸?早年的 Linux 发行版大多内置 mysql,后来 Oracle 收购 Sun 之后,开源发行版不再集成 mysql。CentOS 7 已经不提供 mysql,转而内置了 mariadb。直接装 mysql 会和 mariadb 的文件撞车,所以这一步不能省。
三、方式一:通过 yum 在线安装
1. 确认当前是否有 mysql 残留
rpm -qa | grep mysql
2. 按系统版本找对应的 yum 源
官方源地址有两个:repo.mysql.com 与 dev.mysql.com/downloads/repo/yum/。注意源里的 el7 标识要和 CentOS 7 对应。
3. 下载并安装 rpm 包
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
如果报 -bash: wget: 未找到命令,先装 wget 再重跑:
yum -y install wget
4. 安装与安装服务端
用 yum 装这个 release 包时,yum 会自动补上环境变量和启动脚本;随后装服务端 community-server。
yum -y install mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql-community-server
5. 启动并查看状态
systemctl start mysqld
systemctl status mysqld
6. 设置开机启动
systemctl enable mysqld
systemctl daemon-reload
7. 取出初始密码
grep "password" /var/log/mysqld.log
8. 登录并改密码
mysql -uroot -p
登录后执行(引号内换成自己的强密码):
alter user 'root'@'localhost' identified by 'Root@123456';
flush privileges;
9. 开远程登录与放端口
grant all privileges on *.* to root@'%' identified by "修改后的密码";
再配防火墙开 3306:
cd /etc/sysconfig/
vim iptables
在规则链里加一行:
-A INPUT -p tcp --dport 3306 -j ACCEPT
10. 配字符编码并重启
编辑 /etc/my.cnf,加入:
character_set_server=utf8
init_connect='SET NAMES utf8'
保存退出后重启服务:
systemctl restart mysqld
至此,yum 在线安装完成。
四、方式二:离线安装 MySQL
1. 检查与卸载依赖
同样是先看 mariadb 并卸掉:
rpm -qa | grep mariadb
rpm -e --nodeps 文件名
2. 准备离线包
在内网能上网的机器上,从官方渠道下载 mysql-5.7.44 的 bundle 压缩包,再把压缩包传到 CentOS 7 机器上。注意版本要和系统大版本匹配(这里是 el7)。
3. 确认系统已装 libaio
rpm -qa | grep libaio
多数 Linux 默认已装,除非被手工卸载过。
4. 解压 bundle
tar -xvf mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar
5. 按固定顺序装 rpm
顺序不能乱,依赖是串起来的:
rpm -ivh mysql-community-common-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.44-1.el7.x86_64.rpm
装 server 包时容易报错,原因常是安装 Linux 时选了"最小安装",缺了一批服务端依赖。如果装的是自己搭的虚拟机,重装时把基本环境选成"基础设施服务器"可以避掉大部分问题。
6. 启动与自启
systemctl status mysqld
systemctl start mysqld
systemctl enable mysqld
systemctl daemon-reload
7. 取初始密码并登录
cat /var/log/mysqld.log | grep password
mysql -uroot -p
8. 改密码、改 host 并刷新
SET PASSWORD FOR 'root'@'localhost'="Root@123456";
update user set host='%' where user='root';
FLUSH PRIVILEGES;
9. 关防火墙后用客户端连通
systemctl stop firewalld.service
离线安装到此完成。生产环境建议保留防火墙规则、只放行可信来源,而不是直接停掉 firewalld。
五、两种方式怎么选
- 能联网、版本要跟上游对齐:走 yum,省事且后续升级方便。
- 内网环境、机房无出口:走离线 bundle,关键是先把 common、libs、devel、libs-compat、client、server 的顺序走对。
- 两条路最后都要做同一件事:改 root 初始密码。初始密码只落在
/var/log/mysqld.log 里,没改之前远程连接是打不开的。
qidao123.com企服评测-应用市场 编辑提示
本文对比了 CentOS 7 下有外网与无外网两种 MySQL 5.7 安装路径,逐条给出卸载 mariadb、添加 yum 源、安装服务端、启动自启、取初始密码、改密码、放通 3306、配置 utf8 编码的完整步骤,并说明离线 bundle 中六个 rpm 的固定安装顺序。文中命令建议在测试环境先验证,线上操作前请备份数据库与配置文件;远程开放 root 账号等于把管理面暴露出去,实际部署应改用限定来源的专用账号,并保留防火墙策略。 |