💻 无外网环境下安装 MySQL 5.7 和 8.0 图文教程
适用系统:Linux(如 CentOS)
安装方式:本地二进制安装
安装目标:
- MySQL 5.7 运行在端口 3306
- MySQL 8.0 运行在端口 13306
📦 第一步:下载所需文件(在可联网电脑上)
从官网下载二进制安装包(选择 .tar.gz
和 .tar.xz
格式):
MySQL 版本 | 下载地址 | 文件名示例 |
---|---|---|
MySQL 5.7 | https://downloads.mysql.com/archives/community/ | mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz |
MySQL 8.0 | https://dev.mysql.com/downloads/mysql/ | mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz |
✅ 将下载好的文件通过 WinSCP、XFTP、U盘等手段上传到 Linux 服务器的 /usr/local/src
目录。
🧰 第二步:准备系统环境
# 添加 MySQL 用户(不可登录)
useradd -r -s /sbin/nologin mysql
# 创建安装与数据目录
mkdir -p /usr/local/mysql57 /usr/local/mysql80
mkdir -p /data/mysql57 /data/mysql80
# 授权目录归属
chown -R mysql:mysql /data/mysql57 /data/mysql80
📂 第三步:解压安装包
cd /usr/local/src
# 解压 MySQL 5.7
tar -zxvf mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.43-linux-glibc2.12-x86_64 /usr/local/mysql57
# 解压 MySQL 8.0
tar -xvf mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz
mv mysql-8.0.36-linux-glibc2.28-x86_64 /usr/local/mysql80
🧱 第四步:初始化数据库
# 初始化 MySQL 5.7
/usr/local/mysql57/bin/mysqld --initialize --basedir=/usr/local/mysql57 --datadir=/data/mysql57 --user=mysql
# 初始化 MySQL 8.0
/usr/local/mysql80/bin/mysqld --initialize --basedir=/usr/local/mysql80 --datadir=/data/mysql80 --user=mysql
📌 提示:初始化成功后,终端中会显示 root 初始密码(务必记下!)
⚙️ 第五步:配置 my.cnf 文件
# MySQL 5.7 配置文件
cat > /etc/my.cnf <<EOF
[mysqld]
basedir=/usr/local/mysql57
datadir=/data/mysql57
port=3306
socket=/tmp/mysql57.sock
pid-file=/tmp/mysql57.pid
user=mysql
symbolic-links=0
log-error=/var/log/mysql57.log
EOF
# MySQL 8.0 配置文件
cat > /etc/my80.cnf <<EOF
[mysqld]
basedir=/usr/local/mysql80
datadir=/data/mysql80
port=13306
socket=/tmp/mysql80.sock
pid-file=/tmp/mysql80.pid
user=mysql
symbolic-links=0
log-error=/var/log/mysql80.log
EOF
🧩 第六步:配置 systemd 服务
# 创建 mysql57 服务文件
cat > /etc/systemd/system/mysql57.service <<EOF
[Unit]
Description=MySQL 5.7
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql57/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
# 创建 mysql80 服务文件
cat > /etc/systemd/system/mysql80.service <<EOF
[Unit]
Description=MySQL 8.0
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql80/bin/mysqld --defaults-file=/etc/my80.cnf
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
🚀 第七步:启动并验证服务
systemctl daemon-reload
systemctl enable --now mysql57
systemctl enable --now mysql80
# 查看运行状态
systemctl status mysql57
systemctl status mysql80
🔐 第八步:登录并设置密码
# 登录
/usr/local/mysql57/bin/mysql -uroot -p -S /tmp/mysql57.sock
/usr/local/mysql80/bin/mysql -uroot -p -S /tmp/mysql80.sock
# 修改密码并启用远程
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPass123!';
CREATE USER 'root'@'%' IDENTIFIED BY 'YourNewPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
🧪 第九步:连接测试
mysql -uroot -p -h127.0.0.1 -P3306 # MySQL 5.7
mysql -uroot -p -h127.0.0.1 -P13306 # MySQL 8.0
❗ 常见问题
问题 | 说明 |
---|---|
启动失败 | 检查配置文件路径、目录权限、日志信息 |
忘记密码 | 可用 --skip-grant-tables 启动并重置 |
无法远程连接 | 检查防火墙和 bind-address 设置 |
如需帮助,可发送截图或错误信息进行排查。安装完成后请务必定期备份数据。