mysql5.6部署多个端口实例

发布于:2025-04-01 ⋅ 阅读:(20) ⋅ 点赞:(0)


# 🧱 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!