# 🧱 MySQL 5.6 多实例部署文档(含初始化脚本)🚀
适用于 CentOS 7
---
## 🧩 第一步:安装 MySQL 5.6
```bash
# 下载并安装 MySQL 官方 yum 源(5.6 版本)
wget https://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
# 安装 MySQL 5.6 服务器
yum install -y mysql-community-server
# 检查版本
mysqld --version
```
---
## 🧩 第二步:执行初始化部署脚本(推荐)
保存以下内容为 `mysql_multi_56_setup.sh`,并赋执行权限:
```bash
chmod +x mysql_multi_56_setup.sh
./mysql_multi_56_setup.sh
```
### ✨ 脚本内容如下:
```bash
#!/bin/bash
PORTS=(3306 3307 3316)
BASEDIR=/usr
DATA_ROOT=/data/mysql
echo "📁 创建数据目录..."
for port in "${PORTS[@]}"; do
mkdir -p ${DATA_ROOT}/${port}
chown -R mysql:mysql ${DATA_ROOT}/${port}
done
echo "🧩 初始化数据目录..."
for port in "${PORTS[@]}"; do
mysql_install_db --basedir=${BASEDIR} --datadir=${DATA_ROOT}/${port} --user=mysql
done
echo "🛡️ 备份 /etc/my.cnf ..."
cp /etc/my.cnf /etc/my.cnf.bak.$(date +%F-%H%M%S)
echo "⚙️ 生成 mysqld_multi 配置..."
cat > /etc/my.cnf <<EOF
[mysqld_multi]
mysqld = /usr/sbin/mysqld
mysqladmin = /usr/bin/mysqladmin
user = root
password = rootpass
[mysqld3306]
port = 3306
datadir = ${DATA_ROOT}/3306
socket = ${DATA_ROOT}/3306/mysql.sock
pid-file = ${DATA_ROOT}/3306/mysqld.pid
log-error = ${DATA_ROOT}/3306/mysqld.log
server-id = 1
skip-name-resolve
[mysqld3307]
port = 3307
datadir = ${DATA_ROOT}/3307
socket = ${DATA_ROOT}/3307/mysql.sock
pid-file = ${DATA_ROOT}/3307/mysqld.pid
log-error = ${DATA_ROOT}/3307/mysqld.log
server-id = 2
skip-name-resolve
[mysqld3316]
port = 3316
datadir = ${DATA_ROOT}/3316
socket = ${DATA_ROOT}/3316/mysql.sock
pid-file = ${DATA_ROOT}/3316/mysqld.pid
log-error = ${DATA_ROOT}/3316/mysqld.log
server-id = 3
skip-name-resolve
EOF
echo "🚀 启动所有 MySQL 实例..."
mysqld_multi start
echo "✅ 启动完成。当前运行实例:"
ps -ef | grep mysqld | grep -v grep
echo -e "\n💡 登录方法(初次无密码):"
for port in "${PORTS[@]}"; do
echo "mysql -uroot -S ${DATA_ROOT}/${port}/mysql.sock"
done
```
---
## 🧩 第三步:设置 root 密码(MySQL 5.6)
登录每个实例并执行以下语句:
```sql
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('YourRootPass@123');
SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('YourRootPass@123');
SET PASSWORD FOR 'root'@'%' = PASSWORD('YourRootPass@123');
FLUSH PRIVILEGES;
```
💡 若 socket 登录失败,可以使用:
```bash
mysql -u root -P 3306 -h 127.0.0.1 -p
```
---
## 🧩 第四步:授权远程连接(如需要)
```sql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'YourRootPass@123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
```
---
## 🧩 第五步:开放防火墙端口(如需远程访问)
```bash
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=3307/tcp
firewall-cmd --permanent --add-port=3316/tcp
firewall-cmd --reload
```
---
## ✅ 常用命令总结
| 操作 | 命令 |
|---------------------------|---------------------------------------------|
| 启动所有实例 | `mysqld_multi start` |
| 启动指定实例 | `mysqld_multi start 3307` |
| 停止实例 | `mysqld_multi stop 3306` |
| 登录实例(socket) | `mysql -uroot -S /data/mysql/3306/mysql.sock -p` |
| 登录实例(TCP) | `mysql -uroot -h127.0.0.1 -P3306 -p` |
| 查看 root 用户有哪些 | `SELECT Host, User FROM mysql.user WHERE User='root';` |
| 查看端口监听 | `netstat -tunlp | grep 3306` |
---
## ✅ 部署完成!
你现在已成功完成 MySQL 5.6 多实例部署,配置了密码与远程访问权限。后续可继续:
- 添加普通业务用户
- 配置备份与监控
- 设置 systemd 开机启动
🚀 Happy MySQL'ing!