宝塔上如何安装2个mysql?

在宝塔面板上安装两个 MySQL 实例是可行的,但需要注意避免端口冲突、数据目录冲突以及服务管理问题。以下是详细的操作步骤:


目标:在同一台服务器上运行两个 MySQL 实例(例如:3306 和 3307)


🛠️ 步骤一:安装第一个 MySQL(通过宝塔默认安装)

  1. 登录宝塔面板。
  2. 进入「软件商店」。
  3. 找到 MySQL(建议选择 5.7 或 8.0 版本),点击安装。
  4. 安装完成后,它会默认监听 3306 端口,数据目录为 /www/server/data

✅ 第一个实例已完成,无需额外操作。


🔧 步骤二:手动安装第二个 MySQL 实例

⚠️ 注意:不要通过宝塔再安装一次 MySQL,否则会覆盖或冲突。我们需手动部署第二个实例

方法:使用 mysqld_multi 或独立 mysqld 配置

这里以 独立配置文件方式 启动第二个 MySQL 实例(推荐)。


1. 创建第二个实例的数据目录和配置文件

# 创建数据目录
mkdir /www/server/data2
chown -R mysql:mysql /www/server/data2

2. 初始化第二个实例的数据

# 使用 mysql_install_db 或 mysqld --initialize
/usr/sbin/mysqld --initialize-insecure 
  --user=mysql 
  --basedir=/www/server/mysql 
  --datadir=/www/server/data2

⚠️ --initialize-insecure:不设置随机密码(方便测试)。生产环境建议用 --initialize 并记录临时密码。


3. 创建第二个实例的配置文件

新建配置文件:/etc/my3307.cnf

[mysqld]
# 基础设置
port = 3307
socket = /tmp/mysql3307.sock
pid-file = /www/server/data2/mysql.pid
basedir = /www/server/mysql
datadir = /www/server/data2
tmpdir = /tmp

# 日志设置
log-error = /www/server/data2/error.log
slow_query_log = 1
slow_query_log_file = /www/server/data2/slow.log
long_query_time = 2

# 其他必须设置
server-id = 2
skip-locking
skip-name-resolve
lower_case_table_names = 1

# 避免与 3306 冲突
gtid-mode = OFF
log-bin = mysql-bin
binlog-format = ROW

# 可选:关闭不必要的功能
performance_schema = OFF
innodb_buffer_pool_size = 128M

💡 确保所有路径唯一,尤其是 socket、pid、log、datadir。


4. 启动第二个 MySQL 实例

# 启动命令
/usr/sbin/mysqld --defaults-file=/etc/my3307.cnf &

检查是否启动成功:

ps aux | grep mysqld
netstat -tlnp | grep 3307

5. 设置开机自启(可选)

编辑 /etc/rc.d/rc.local 或使用 systemd。

方式 A:添加到 rc.local(简单)

echo "/usr/sbin/mysqld --defaults-file=/etc/my3307.cnf &" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

方式 B:创建 systemd 服务(推荐)

创建服务文件:

vim /etc/systemd/system/mysql3307.service

内容如下:

[Unit]
Description=MySQL 3307 Instance
After=network.target

[Service]
Type=simple
User=mysql
ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my3307.cnf
Restart=on-failure

[Install]
WantedBy=multi-user.target

启用服务:

systemctl daemon-reexec
systemctl enable mysql3307
systemctl start mysql3307

6. 设置 root 密码(如果初始化时未设)

连接到 3307 实例:

mysql -u root -S /tmp/mysql3307.sock

然后执行:

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的强密码';
FLUSH PRIVILEGES;

🌐 步骤三:宝塔中如何管理?

⚠️ 宝塔只能管理默认的 3306 实例。
✅ 第二个实例(3307)需手动管理,但可通过以下方式增强可用性:

  • 使用 phpMyAdmin 添加第二个实例:

    • 宝塔 → 软件商店 → phpMyAdmin → 设置 → 允许远程登录
    • 在登录页选择“服务器”,输入 127.0.0.1:3307,用 root 登录
  • 使用 Navicat、DBeaver 等工具直接连接 127.0.0.1:3307


⚠️ 注意事项

项目 说明
端口 不能重复(3306 和 3307)
数据目录 必须分开(如 data 和 data2)
Socket 文件 不同(如 /tmp/mysql.sock vs /tmp/mysql3307.sock
配置文件 使用 --defaults-file 指定
内存占用 两个实例会增加内存消耗,注意服务器配置

✅ 总结

操作 是否通过宝塔
第一个 MySQL (3306) ✅ 是(直接安装)
第二个 MySQL (3307) ❌ 否(手动部署)
管理方式 手动或外部工具(如 phpMyAdmin)

如果你希望完全可视化管理,也可以考虑使用 Docker 部署第二个 MySQL,这样更安全隔离:

docker run -d --name mysql2 
  -p 3307:3306 
  -e MYSQL_ROOT_PASSWORD=yourpassword 
  -v /opt/mysql2:/var/lib/mysql 
  mysql:5.7

然后宝塔不变,Docker 管理第二个实例。


如有需要,我可以提供 Docker + 宝塔共存方案。欢迎继续提问!

未经允许不得转载:云计算HECS » 宝塔上如何安装2个mysql?