Ubuntu系统上如何启动并管理两个MySQL数据库实例

ubuntu启动两个mysql数据库

时间:2025-07-08 03:55


在Ubuntu上高效启动并管理两个MySQL数据库实例:深度指南 在开发和生产环境中,有时我们需要在同一台服务器上运行多个MySQL数据库实例

    这种做法可以带来多种好处,如数据隔离、性能优化以及资源管理等

    Ubuntu作为一款广泛使用的Linux发行版,提供了灵活的环境来配置和管理多个MySQL实例

    本文将详细介绍如何在Ubuntu系统上启动并高效管理两个MySQL数据库实例

     一、准备工作 在开始之前,确保你的Ubuntu系统已经更新到最新版本

    你可以通过以下命令更新系统: bash sudo apt update sudo apt upgrade -y 此外,你可能需要一些基本的软件包,如`wget`、`vim`等,用于下载和编辑配置文件

     bash sudo apt install wget vim -y 二、安装MySQL服务器 尽管我们要运行两个MySQL实例,但基础MySQL服务器软件只需安装一次

    你可以通过以下命令安装MySQL: bash sudo apt install mysql-server -y 在安装过程中,系统会提示你设置root密码

    请按照提示完成设置

     三、创建第二个MySQL实例目录结构 默认情况下,MySQL会在`/var/lib/mysql`目录下存储数据

    为了创建第二个实例,我们需要一个新的数据目录

    这里我们选择`/var/lib/mysql2`作为第二个实例的数据目录

     bash sudo mkdir -p /var/lib/mysql2 sudo chown -R mysql:mysql /var/lib/mysql2 四、配置第一个MySQL实例(默认实例) 默认情况下,MySQL的配置文件位于`/etc/mysql/mysql.conf.d/mysqld.cnf`

    这个配置文件适用于我们的第一个MySQL实例

    通常,这个实例不需要额外配置,因为它已经按照默认设置运行

     不过,为了确保两个实例不会冲突,我们可以检查并修改默认实例的端口号(尽管这不是必需的,因为默认端口3306通常是为第一个实例保留的)

    打开配置文件: bash sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 确保`【mysqld】`部分包含以下内容(默认情况下这些设置已经存在): ini 【mysqld】 port = 3306 socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql 保存并退出编辑器

     五、配置第二个MySQL实例 为了配置第二个MySQL实例,我们需要创建一个新的配置文件

    通常,可以将这个配置文件放在`/etc/mysql/conf.d/`目录下,并命名为一个容易识别的名称,比如`mysql2.cnf`

     bash sudo vim /etc/mysql/conf.d/mysql2.cnf 在文件中添加以下内容: ini 【mysqld_multi】 mysqld = /usr/sbin/mysqld_safe mysqladmin = /usr/bin/mysqladmin user = mysql 【mysqld2】 port = 3307 socket = /var/run/mysqld/mysqld2.sock datadir = /var/lib/mysql2 pid-file = /var/run/mysqld/mysqld2.pid log-error = /var/log/mysql/error2.log 这里,我们指定了第二个实例使用的端口(3307)、socket文件、数据目录、PID文件和错误日志文件

     六、初始化第二个MySQL实例 在启动第二个MySQL实例之前,我们需要对其进行初始化

    使用`mysqld --initialize`命令来完成这一步: bash sudo mysqld --initialize --user=mysql --datadir=/var/lib/mysql2 这条命令会生成必要的系统表,并初始化数据目录

     七、设置系统服务管理第二个MySQL实例 为了管理第二个MySQL实例,我们需要创建一个新的systemd服务单元文件

    在`/etc/systemd/system/`目录下创建一个新的服务文件,比如`mysql2.service`: bash sudo vim /etc/systemd/system/mysql2.service 在文件中添加以下内容: ini 【Unit】 Description=MySQL Server 2 After=network.target After=syslog.target 【Service】 User=mysql Group=mysql ExecStart=/usr/sbin/mysqld --defaults-file=/etc/mysql/conf.d/mysql2.cnf PIDFile=/var/run/mysqld/mysqld2.pid LimitNOFILE = 5000 【Install】 WantedBy=multi-user.target 保存并退出编辑器

     接下来,重新加载systemd配置并启动第二个MySQL实例: bash sudo systemctl daemon-reload sudo systemctl start mysql2 为了确保第二个MySQL实例在系统启动时自动启动,可以将其设置为开机自启: bash sudo systemctl enable mysql2 八、安全配置 为了提高安全性,我们需要为第二个MySQL实例运行`mysql_secure_installation`脚本

    不过,由于我们不能直接以常规方式运行它(因为它会尝试连接到默认实例),我们需要指定一些额外的参数来连接到第二个实例

     首先,登录到第二个MySQL实例: bash sudo mysql -u root -p -S /var/run/mysqld/mysqld2.sock 系统会提示你输入root密码

    成功登录后,你可以运行一系列安全命令,这些命令与`mysql_secure_installation`脚本中的命令类似: sql ALTER USER root@localhost IDENTIFIED BY NewStrongPassword; FLUSH PRIVILEGES; DELETE FROM mysql.user WHERE User=root AND Host NOT IN(localhost, 127.0.0.1, ::1); DROP DATABASE test; DELETE FROM mysql.db WHERE Db=test OR Db=t