Linux CentOS 7 下 MySQL 8.0.20 单机多实例部署指南

远山来客
远山来客
发布时间:2026-10-15| 4人浏览过
原创

本文详解在 Linux CentOS 7 系统中解压安装 MySQL 8.0.20 并实现单机多实例(如 3306、3307、3308 端口)运行的方法。内容包含用户创建、配置文件编写、mysqld_multi 管理工具使用及安全性设置。

准备条件与环境

确保目标服务器运行 CentOS 7 系统。我们将使用 MySQL 8.0.20 版本的通用二进制包进行解压安装。所有操作将集中在一个主目录下,通过 mysqld_multi 工具管理多个实例。

具体操作步骤

第1步:下载与解压安装包

首先创建应用目录并上传/解压 MySQL 安装包。建议将文件存放于 /usr/app/mysql 以方便管理。

# 创建目录
mkdir -p /usr/app/mysql
cd /usr/app/mysql

# 假设已上传 mysql-8.0.20-el7-x86_64.tar.gz,执行解压并重命名
tar -zxvf mysql-8.0.20-el7-x86_64.tar.gz
mv mysql-8.0.20-el7-x86_64 mysql-8.0

第2步:创建数据目录、日志目录及系统用户

为每个实例创建独立的数据和日志目录,并建立专用的 mysql 用户以确保权限隔离。

# 创建 3306, 3307, 3308 三个实例的 data 和 log 目录
mkdir -p /usr/app/mysql/mysql-8.0/{3306,3307,3308}/{data,log}

# 创建日志文件
for port in 3306 3307 3308; do
touch /usr/app/mysql/mysql-8.0/${port}/log/error.log
done

# 创建 mysql 用户组及用户
systemctl stop firewalld # 可选:测试环境可临时关闭防火墙,生产环境请配置开放端口
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql

# 修改目录所有者和组权限
chown -R mysql:mysql /usr/app/mysql

第3步:配置 my.cnf 多实例文件

编辑 /etc/my.cnf 配置文件。此文件需包含 [mysqld_multi] 段以及各个实例的独立段(如 [mysqld3306])。请注意区分全局配置与各实例特有的 socket 路径和数据目录。

cat > /etc/my.cnf << EOF
[client]
default-character-set=utf8mb4

[mysqld_multi]
mysqld=/usr/app/mysql/mysql-8.0/bin/mysqld_safe
mysqladmin=/usr/app/mysql/mysql-8.0/bin/mysqladmin
log=/usr/app/mysql/mysql-8.0/mysqld_multi.log

[mysqld3306]
port=3306
server_id=101
datadir=/usr/app/mysql/mysql-8.0/3306/data
socket=/tmp/mysql_3306.sock
log-error=/usr/app/mysql/mysql-8.0/3306/log/error.log
pid-file=/tmp/mysql3306.pid
user=mysql
basedir=/usr/app/mysql/mysql-8.0
character_set_server=utf8mb4
lower_case_table_names=1
explicit_defaults_for_timestamp=true

[mysqld3307]
port=3307
server_id=102
datadir=/usr/app/mysql/mysql-8.0/3307/data
socket=/tmp/mysql_3307.sock
log-error=/usr/app/mysql/mysql-8.0/3307/log/error.log
pid-file=/tmp/mysql3307.pid
user=mysql
basedir=/usr/app/mysql/mysql-8.0
character_set_server=utf8mb4
lower_case_table_names=1
explicit_defaults_for_timestamp=true

[mysqld3308]
port=3308
server_id=103
datadir=/usr/app/mysql/mysql-8.0/3308/data
socket=/tmp/mysql_3308.sock
log-error=/usr/app/mysql/mysql-8.0/3308/log/error.log
pid-file=/tmp/mysql3308.pid
user=mysql
basedir=/usr/app/mysql/mysql-8.0
character_set_server=utf8mb4
lower_case_table_names=1
explicit_defaults_for_timestamp=true
EOF

第4步:初始化各实例数据库

使用 mysqld 命令分别初始化三个实例的数据目录。注意: 初始化完成后,请务必保存终端输出的临时密码,用于首次登录修改。

/usr/app/mysql/mysql-8.0/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/usr/app/mysql/mysql-8.0 --datadir=/usr/app/mysql/mysql-8.0/3306/data
/usr/app/mysql/mysql-8.0/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/usr/app/mysql/mysql-8.0 --datadir=/usr/app/mysql/mysql-8.0/3307/data
/usr/app/mysql/mysql-8.0/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/usr/app/mysql/mysql-8.0 --datadir=/usr/app/mysql/mysql-8.0/3308/data

第5步:设置环境变量

为了方便在任何路径下直接调用 mysql 和 mysqld_multi 命令,将 bin 目录加入系统 PATH。

# 编辑 /etc/profile
vi /etc/profile
# 在文件末尾添加:
export PATH=/usr/app/mysql/mysql-8.0/bin:$PATH

# 使配置立即生效
source /etc/profile

第6步:启动实例与状态检查

使用 mysqld_multi 工具配合 /etc/my.cnf 启动服务。启动后建议检查日志文件确认无报错。

# 启动所有实例
mysqld_multi --defaults-file=/etc/my.cnf start

# 或者单独启动某个实例
# mysqld_multi --defaults-file=/etc/my.cnf start 3306

# 查看各实例状态
mysqld_multi --defaults-file=/etc/my.cnf report

如果启动失败,请查看:/usr/app/mysql/mysql-8.0/mysqld_multi.log 及各实例下的 error.log。

第7步:重置密码并授权远程访问

使用初始化时的临时密码登录第一个实例(3306),然后进行密码重置和远程访问权限配置。其他实例(3307/3308)操作逻辑相同,仅 socket 文件和端口不同。

# 登录 3306 实例
mysql -u root -p -S /tmp/mysql_3306.sock

# 在 MySQL 命令行中执行以下 SQL:

# 1. 修改本地 root 密码 (请替换为您的复杂密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPwd123!';

# 2. 修改允许远程连接的 root 账户密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'YourStrongPwd123!';

# 3. 刷新权限
FLUSH PRIVILEGES;

第8步:配置防火墙策略

若服务器开启了 firewalld,需放行相关端口。

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=3307/tcp --permanent
firewall-cmd --zone=public --add-port=3308/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports

结果验证与排错

完成上述步骤后,您可以通过外部数据库客户端(如 Navicat 或 DBeaver)连接 服务器IP:3306 验证部署是否成功。若遇到连接被拒,请检查:

  • 防火墙规则是否正确加载。
  • MySQL 用户的 Host 字段是否已更新为 %。
  • 各实例的 error.log 中是否有具体的错误提示。

以上就是 Linux CentOS 7 下 MySQL 8.0.20 单机多实例部署的详细内容,更多关于 MySQL 运维的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。