服务器安装第二个/多个Mysql的步骤

本文详细介绍了如何在Windows Server上安装并配置第二个Mysql实例,通过更改端口、安装路径和my.ini配置,实现两个Mysql实例的共存,并开放远程连接所需端口。

说明:

  1.讲解的场景是windows server 服务器
  2.Mysql为官网下载的zip压缩包,版本为5.7.30
  3.服务器现有的Mysql安装路径为:C:\Program Files\MySQL\mysql-5.7.30
步骤:
1.在C:\Program Files\路径下新建文件夹MySQL3307(名字自己取),从服务器现有的Mysql安装路径下将mysql-5.7.30文件夹拷贝一份粘贴到路径C:\Program Files\MySQL3307\下
2.上一步执行完后,第二个Mysql的安装路径最终为:C:\Program Files\MySQL3307\mysql-5.7.30
    修改该路径下的my.ini文件:
    需要修改的key以前的value为:    

[mysqld]
port=3306
basedir=C:\Program Files\MySQL\mysql-5.7.30
datadir=C:\ProgramData\MySQL\Data
[client]
port=3306

    修改后的key-value为:    

[mysqld]
port=3307
basedir=C:\Program Files\MySQL3307\mysql-5.7.30
#此时事先在C:\ProgramData\路径下新建文件夹\MySQL3307\Data
datadir=C:\ProgramData\MySQL3307\Data
[client]
port=3307 

   
3.安装

    zip压缩包的安装过程都是一样的,以下复述一遍及注意点说明
    3.1 cmd管理员运行:
    cd C:\Program Files\MySQL3307\mysql-5.7.30\bin
    mysqld --initialize --console
    以上命令执行完后,拷贝为root@localhost生成的临时密码
    mysqld --install mysql3307
    安装成功后:net start mysql3307
    如果上述命令启动失败,在services.msc里找见mysql3307右键启动
    3.2 修改root密码
    以上的dos窗口继续执行:
    mysql -u root -p
    输入刚刚拷贝的临时密码
    alter user 'root'@'localhost' identified by '新密码'
    exit;
4.远程连接防火墙开放3307端口

    控制面板-Windows防火墙-高级设置-入站规则-新建规则-端口-TCP 特定本地端口,填入3307-允许连接-名称 mysql3307(自定义)

<think>我们参考了用户提供的引用内容,特别是引用[1][2][4]中提到了使用mysqld_multi方式在一台服务器上安装多个MySQL实例。但是,用户特别询问的是使用RPM方式安装MySQL 8并配置多个实例。引用[3]提到了RPM发行版的格式,但未直接给出多实例配置步骤。引用[4]提供了一个my.cnf配置文件的示例,其中包含了多个实例(3306、3307等)的配置,但它是针对二进制安装的配置。引用[5]提到了MySQL8的多实例注意事项。 由于用户要求使用RPM方式安装,我们需要调整步骤:RPM安装默认会创建一个MySQL实例,我们需要手动配置多个实例。通常,使用RPM安装后,我们可以通过复制数据目录并修改配置文件来添加多个实例,或者使用mysqld_multi工具(如果可用)来管理。 注意:MySQL官方文档建议,从MySQL 8.0.21开始,mysqld_multi已被弃用,推荐使用systemd来管理多个实例(每个实例一个systemd服务文件)。但用户要求使用RPM安装,并且我们也可以使用mysqld_multi(尽管被弃用,但在一些版本中仍可用)。因此,我们将提供两种方法,但首先我们按照用户要求,使用mysqld_multi(如果用户安装的版本包含该工具)进行配置。 然而,在MySQL 8.0的RPM包中,mysqld_multi可能不再包含在服务器包中,而是包含在mysql-community-server包中(根据版本不同)。因此,我们可能需要手动配置多个实例而不依赖mysqld_multi。 考虑到上述情况,我们给出以下步骤(假设我们使用MySQL 8.0的RPM安装,并且使用systemd管理服务): 步骤1:安装MySQL 8.0服务器 首先,使用RPM安装MySQL 8.0服务器。我们可以从MySQL官方网站下载RPM包,或者使用yum仓库安装步骤2:初始化第一个实例(默认实例) 安装完成后,第一个实例(默认实例)已经初始化,但我们需要停止它,因为我们打算配置多个实例。 步骤3:创建其他实例的数据目录和配置文件 为每个实例创建单独的数据目录和配置文件(或在一个配置文件中配置多个实例)。 步骤4:初始化其他实例 使用mysqld初始化每个额外的实例,并设置正确的权限。 步骤5:为每个实例创建systemd服务文件 由于mysqld_multi被弃用,我们使用systemd来管理多个实例。 但是,为了满足用户可能希望使用mysqld_multi的需求(如果用户坚持使用),我们也提供mysqld_multi的配置方法(但注意可能不适用于最新版本)。 鉴于引用[4]中使用了mysqld_multi,我们假设用户希望使用这种方式。因此,我们主要提供mysqld_multi的配置步骤(在MySQL 8.0的早期版本中可用,但请注意在8.0.21之后已弃用)。 详细步骤如下(使用mysqld_multi): 1. 安装MySQL 8.0服务器RPM包(假设已经安装,如果没有,请先安装) ```bash sudo rpm -ivh mysql-community-server-8.0.*.rpm ``` 2. 安装完成后,默认会安装mysqld_multi工具(在/usr/bin/mysqld_multi)。如果未安装,可能需要安装mysql-community-server包中包含该工具。 3. 创建多个实例的数据目录,例如: ```bash sudo mkdir -p /mysql/3306/data sudo mkdir -p /mysql/3307/data ``` 4. 修改MySQL配置文件/etc/my.cnf,配置多个实例(参考引用[4]): 在[mysqld_multi]段中设置全局参数,然后为每个实例设置一个段,如[mysqld3306], [mysqld3307]等。 注意:在MySQL 8.0中,需要确保每个实例的server_id和端口不同,而且数据目录不同。 5. 初始化每个实例的数据目录(注意:使用mysqld初始化时,需要指定--datadir和--user): ```bash sudo mysqld --initialize --user=mysql --datadir=/mysql/3306/data sudo mysqld --initialize --user=mysql --datadir=/mysql/3307/data ``` 初始化会生成临时密码,需要记录。 6. 设置数据目录的权限: ```bash sudo chown -R mysql:mysql /mysql ``` 7. 使用mysqld_multi启动实例: ```bash sudo mysqld_multi start 3306 sudo mysqld_multi start 3307 ``` 8. 连接每个实例并修改root密码(使用生成的临时密码登录): ```bash mysql -uroot -p -P3306 -h127.0.0.1 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; ``` 但是,在MySQL 8.0中,由于安全性和初始化方式的改变,可能还需要注意其他事项。 另外,如果用户使用的MySQL版本已经移除了mysqld_multi,或者希望使用systemd,我们可以为每个实例创建独立的systemd服务文件。 使用systemd管理多个实例的步骤(推荐): 1. 安装MySQL 8.0服务器(同上)。 2. 创建多个实例的数据目录(同上)。 3. 创建每个实例的配置文件,例如在/etc/my.cnf.d/目录下为每个实例创建一个配置文件,或者在一个文件中使用[mysqld@]语法。但更常见的做法是为每个实例单独配置。 我们可以创建: - /etc/my.cnf.d/instance3306.cnf - /etc/my.cnf.d/instance3307.cnf 在instance3306.cnf中: ``` [mysqld] datadir=/mysql/3306/data socket=/tmp/mysql_3306.sock port=3306 server_id=3306 ...其他配置 ``` 4. 初始化每个实例(同上)。 5. 创建systemd服务文件:MySQL官方提供了多实例的支持,我们可以使用类似mysqld@.service的模板服务。 默认安装后,会有一个mysqld.service和一个mysqld@.service模板。我们可以这样使用: ```bash sudo systemctl start mysqld@3306 sudo systemctl start mysqld@3307 ``` 但是,这要求我们在数据目录的命名上符合规范,以及配置文件中的[mysqld]段能够被正确解析。 实际上,使用systemd管理多实例时,每个实例需要一个特定的数据目录结构,默认是/var/lib/mysql-<instance_name>,但我们也可以通过配置覆盖。 详细步骤可参考MySQL官方文档:https://dev.mysql.com/doc/refman/8.0/en/using-systemd.html#systemd-multiple-mysql-instances 由于用户要求使用RPM安装,并且RPM安装后默认支持systemd管理,因此这是推荐的方法。 鉴于用户的问题描述中引用了mysqld_multi的配置,我们给出一个结合RPM安装mysqld_multi的步骤总结(如果用户坚持使用mysqld_multi,并且版本支持): **步骤1:安装MySQL 8.0 RPM包** 从MySQL官方网站下载以下RPM包(或配置yum仓库): - mysql-community-server - mysql-community-client - mysql-community-common - mysql-community-libs 使用yum或rpm命令安装。例如: ```bash sudo yum install mysql-community-server ``` **步骤2:创建多实例数据目录** ```bash sudo mkdir -p /mysql/3306/data sudo mkdir -p /mysql/3307/data sudo chown -R mysql:mysql /mysql ``` **步骤3:编辑配置文件/etc/my.cnf** 参考引用[4]的配置,但根据MySQL 8.0进行调整。例如: ```ini [mysqld_multi] mysqld=/usr/bin/mysqld_safe mysqladmin=/usr/bin/mysqladmin log=/var/log/mysqld_multi.log [mysqld3306] datadir=/mysql/3306/data socket=/tmp/mysql_3306.sock port=3306 server_id=3306 log-error=/mysql/3306/error.log pid-file=/mysql/3306/mysql.pid [mysqld3307] datadir=/mysql/3307/data socket=/tmp/mysql_3307.sock port=3307 server_id=3307 log-error=/mysql/3307/error.log pid-file=/mysql/3307/mysql.pid ``` **步骤4:初始化每个实例** ```bash sudo mysqld --initialize --user=mysql --datadir=/mysql/3306/data sudo mysqld --initialize --user=mysql --datadir=/mysql/3307/data ``` 初始化后,注意保存生成的临时密码(在error.log中或命令行输出)。 **步骤5:启动实例** ```bash sudo mysqld_multi start 3306 sudo mysqld_multi start 3307 ``` **步骤6:更改root密码** ```bash mysql -uroot -p -P3306 -h127.0.0.1 # 输入临时密码 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; ``` **步骤7:设置开机启动(可选)** 可以将mysqld_multi加入开机启动,但注意在systemd系统中,可能需要创建一个systemd服务来调用mysqld_multi。 注意:以上步骤MySQL 8.0.21之前版本可行,之后版本由于弃用mysqld_multi,可能不适用。如果遇到问题,建议使用systemd方式。 由于时间限制,我们提供两种方法,但推荐使用systemd方式管理多实例。 最后,我们生成相关问题。 </think> ### 在单台服务器上使用 RPM 方式安装多个 MySQL 8 实例的详细步骤 #### 1. **安装 MySQL 8 RPM 包** 下载并安装官方 RPM 包(需替换为实际版本号): ```bash sudo rpm -ivh mysql80-community-release-el7-*.rpm sudo yum install mysql-community-server ``` 安装后默认创建单个实例(端口 3306)[^1][^3]。 #### 2. **创建多实例数据目录** 为每个实例创建独立数据目录并设置权限: ```bash sudo mkdir -p /mysql/3307/data sudo mkdir -p /mysql/3308/data sudo chown -R mysql:mysql /mysql ``` #### 3. **配置多实例参数文件** 编辑 `/etc/my.cnf`,添加以下内容(示例配置 2 个实例): ```ini [mysqld_multi] mysqld = /usr/bin/mysqld_safe mysqladmin = /usr/bin/mysqladmin log = /var/log/mysqld_multi.log [mysqld3306] # 默认实例 datadir = /var/lib/mysql socket = /var/lib/mysql/mysql.sock port = 3306 server_id = 1 [mysqld3307] # 新实例1 datadir = /mysql/3307/data socket = /tmp/mysql_3307.sock port = 3307 server_id = 2 log-error = /mysql/3307/error.log pid-file = /mysql/3307/mysql.pid [mysqld3308] # 新实例2 datadir = /mysql/3308/data socket = /tmp/mysql_3308.sock port = 3308 server_id = 3 log-error = /mysql/3308/error.log pid-file = /mysql/3308/mysql.pid ``` > 注意:每个实例需唯一 `server_id` 和 `port`[^4][^5]。 #### 4. **初始化新实例数据目录** ```bash sudo mysqld --initialize --user=mysql --datadir=/mysql/3307/data sudo mysqld --initialize --user=mysql --datadir=/mysql/3308/data ``` 初始化后记录生成的临时 root 密码(在 `error.log` 中查看)。 #### 5. **启动多实例** 使用 `mysqld_multi` 管理: ```bash sudo mysqld_multi start 3307 # 启动3307实例 sudo mysqld_multi start 3308 # 启动3308实例 ``` #### 6. **连接实例并重置密码** ```bash mysql -uroot -P3307 -p -S /tmp/mysql_3307.sock # 输入临时密码后 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!'; ``` #### 7. **配置 systemd 服务(可选)** 创建服务文件 `/etc/systemd/system/mysqld@.service`: ```ini [Unit] Description=MySQL Instance %i After=network.target [Service] User=mysql ExecStart=/usr/bin/mysqld_multi start %i ExecStop=/usr/bin/mysqld_multi stop %i Restart=on-failure ``` 启动实例: ```bash sudo systemctl start mysqld@3307 ``` ### 关键注意事项 1. **端口与路径冲突**:确保每个实例的 `port`、`socket` 和 `datadir` 唯一。 2. **内存分配**:多实例需合理分配 `innodb_buffer_pool_size`,避免内存溢出[^1]。 3. **备份策略**:每个实例需独立备份,推荐 `mysqldump --port=X`。 4. **版本兼容性**:MySQL 8.0.21+ 已弃用 `mysqld_multi`,建议改用 systemd 管理[^5]。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值