• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    如何在Windows中运行多个MySQL实例详解

    前言

    在Windows中可以从命令行为每个实例使用合适的操作参数来手动启动多个MySQL实例或者通过以Windows服务方式来安装多个服务器来运行。

    1.在windows中MySQL的base目录中创建两个新实例的数据目录data3307,data3308

    2.为每个新实例设置配置文件来指定相关选项

    my3307.cnf文件内容如下:

    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8mb4
    
    [mysqld]
    # 设置3307端口
    port = 3307
    # 设置mysql的安装目录
    basedir=D:\mysql-5.7.25-win32
    # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
    datadir=D:\mysql-5.7.25-win32\data3307
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8mb4
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    explicit_defaults_for_timestamp=true
    log-error=D:\mysql-5.7.25-win32\mysql3307.err
    pid-file=D:\mysql-5.7.25-win32\mysqld3307.pid
    socket =D:\mysql-5.7.25-win32\mysql3307.sock

    my3308.cnf文件内容如下:

    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8mb4
    
    [mysqld]
    # 设置3308端口
    port = 3308
    # 设置mysql的安装目录
    basedir=D:\mysql-5.7.25-win32
    # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
    datadir=D:\mysql-5.7.25-win32\data3308
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8mb4
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    explicit_defaults_for_timestamp=true
    log-error=D:\mysql-5.7.25-win32\mysql3308.err
    pid-file=D:\mysql-5.7.25-win32\mysqld3308.pid
    socket =D:\mysql-5.7.25-win32\mysql3308.sock

    3.初始化新数据库

    D:\mysql-5.7.25-win32\bin>mysqld --defaults-file=D:\mysql-5.7.25-win32\my3307.cnf --initialize --basedir=D:\mysql-5.7.25-win32 --datadir=D:\mysql-5.7.25-win32\data3307
    
    D:\mysql-5.7.25-win32\bin>mysqld --defaults-file=D:\mysql-5.7.25-win32\my3308.cnf --initialize --basedir=D:\mysql-5.7.25-win32 --datadir=D:\mysql-5.7.25-win32\data3308

    4.启动数据库

    D:\mysql-5.7.25-win32\bin>mysqld --defaults-file=D:\mysql-5.7.25-win32\my3307.cnf
    
    D:\mysql-5.7.25-win32\bin>mysqld --defaults-file=D:\mysql-5.7.25-win32\my3308.cnf

    每个服务器都在前台启动(在服务器稍后退出之前不会出现新的提示),所以您需要在单独的控制台窗口中发出这两个命令。

    5.登录数据库修改密码

    C:\Users\Administrator>mysql --port=3307 --host=127.0.0.1 --user=root --password=U0U?KinrdWHb
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 6
    Server version: 5.7.25
    
    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> exit
    Bye
    
    C:\Users\Administrator>mysql --port=3307 --host=127.0.0.1 --user=root --password=123456
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 7
    Server version: 5.7.25 Source distribution
    
    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> exit
    
    
    C:\Users\Administrator>mysql --port=3308 --host=127.0.0.1 --user=root
    Enter password: ************
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 8
    Server version: 5.7.25
    
    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> exit
    Bye
    
    
    C:\Users\Administrator>mysql --port=3308 --host=127.0.0.1 --user=root --password=123456
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 9
    Server version: 5.7.25 Source distribution
    
    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql>

    6.为了关闭数据库服务器,使用合适的端口号连接到每个实例执行下面的命令:

    C:\Users\Administrator>mysqladmin --port=3307 --host=127.0.0.1 --user=root --password=123456 shutdown
    mysqladmin: [Warning] Using a password on the command line interface can be insecure.
    
    C:\Users\Administrator>mysqladmin --port=3308 --host=127.0.0.1 --user=root --password=123456 shutdown
    mysqladmin: [Warning] Using a password on the command line interface can be insecure.

    上面的配置允许客户端通过TCP/IP来进行连接。如果你的Windows版本支持命名管道并且你也想使用命名管道来连接,指定启用命名管道选项和指定它的名称。每个实例支持命名管道连接必须使用一个唯一的管道名。例如:

    my3307.cnf文件内容如下:

    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8mb4
    
    [mysqld]
    # 设置3307端口
    port = 3307
    # 设置mysql的安装目录
    basedir=D:\mysql-5.7.25-win32
    # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
    datadir=D:\mysql-5.7.25-win32\data3307
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8mb4
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    explicit_defaults_for_timestamp=true
    log-error=D:\mysql-5.7.25-win32\mysql3307.err
    pid-file=D:\mysql-5.7.25-win32\mysqld3307.pid
    enable-named-pipe
    socket =D:\mysql-5.7.25-win32\mysql3307.sock

    my3308.cnf文件内容如下:

    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8mb4
    
    [mysqld]
    # 设置3308端口
    port = 3308
    # 设置mysql的安装目录
    basedir=D:\mysql-5.7.25-win32
    # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
    datadir=D:\mysql-5.7.25-win32\data3308
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8mb4
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    explicit_defaults_for_timestamp=true
    log-error=D:\mysql-5.7.25-win32\mysql3308.err
    pid-file=D:\mysql-5.7.25-win32\mysqld3308.pid
    socket =D:\mysql-5.7.25-win32\mysql3308.sock

    然后启动MySQL实例。想让客户端通过共享内存连接的过程与上面的过程类似。对每个连接使用–shared-memory选项并使用–shared-memory-base-name选项来为每个实例指定唯一的共享内存名字。

    在Windows中作为Windows服务来启动多个MySQL实例

    在Windows中,一个MySQL服务器可以以Windows服务来运行。为了设置多个MySQL服务,你必须确保每个实例使用不同的服务名另外其它参数每个实例必须都有唯一值。为了将MySQL服务器注册成为Windows服务,使用mysqld –install或mysqld –install-manual选项。

    基于上面的信息,有几种方式来设置多个Windows服务。在注册Windows服务之前需要关闭并删除任何已经存在的Windows服务。

    方法1

    在一个标准的选项文件中指定所有服务选项。这样就需要为每个MySQL服务指定不同的服务名。假设端口为3307的MySQL实例的服务名为mysqld1,端口为3308的MySQL实例的服务名为mysqld2。那么D:\mysql-5.7.25-win32\my.ini设置如下:

    [mysqld1]
    # 设置3307端口
    port = 3307
    # 设置mysql的安装目录
    basedir=D:\mysql-5.7.25-win32
    # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
    datadir=D:\mysql-5.7.25-win32\data3307
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8mb4
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    explicit_defaults_for_timestamp=true
    log-error=D:\mysql-5.7.25-win32\mysql3307.err
    pid-file=D:\mysql-5.7.25-win32\mysqld3307.pid
    socket =D:\mysql-5.7.25-win32\mysql3307.sock
    
    
    [mysqld2]
    # 设置3308端口
    port = 3308
    # 设置mysql的安装目录
    basedir=D:\mysql-5.7.25-win32
    # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
    datadir=D:\mysql-5.7.25-win32\data3308
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8mb4
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    explicit_defaults_for_timestamp=true
    log-error=D:\mysql-5.7.25-win32\mysql3308.err
    pid-file=D:\mysql-5.7.25-win32\mysqld3308.pid
    socket =D:\mysql-5.7.25-win32\mysql3308.sock

    注册服务,使用完整服务路径名来确保Windows为每个服务注册正确的可执行程序:

    D:\mysql-5.7.25-win32\bin>mysqld --install mysqld1
    Service successfully installed.
    
    D:\mysql-5.7.25-win32\bin>mysqld --install mysqld2
    Service successfully installed.

    为了启动MySQL服务,使用服务管理器或者使用net start servicename:

    C:\Users\Administrator>net start mysqld1

    mysqld1 服务正在启动 .

    mysqld1 服务已经启动成功。

    C:\Users\Administrator>net start mysqld2

    mysqld2 服务正在启动 .

    mysqld2 服务已经启动成功。

    为了停止MySQL服务,使用服务管理器或者使用net stop servicename:

    C:\Users\Administrator>net stop mysqld1

    mysqld1 服务正在停止.

    mysqld1 服务已成功停止。

    C:\Users\Administrator>net stop mysqld2

    mysqld2 服务正在停止.

    mysqld2 服务已成功停止。

    删除服务

    D:\mysql-5.7.25-win32\bin>mysqld --remove mysqld1
    Service successfully removed.
    
    D:\mysql-5.7.25-win32\bin>mysqld --remove mysqld2
    Service successfully removed.

    方法2

    为每个MySQL服务使用单独的文件来指定选项并且在注册服务时使用–defaults-file选项来告诉每个服务器所要使用的选项文件。在这种情况下,每个文件都将使用[mysqld]选项组。

    my3307.cnf文件内容如下:

    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8mb4
    
    [mysqld]
    # 设置3307端口
    port = 3307
    # 设置mysql的安装目录
    basedir=D:\mysql-5.7.25-win32
    # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
    datadir=D:\mysql-5.7.25-win32\data3307
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8mb4
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    explicit_defaults_for_timestamp=true
    log-error=D:\mysql-5.7.25-win32\mysql3307.err
    pid-file=D:\mysql-5.7.25-win32\mysqld3307.pid
    enable-named-pipe
    socket =D:\mysql-5.7.25-win32\mysql3307.sock

    my3308.cnf文件内容如下:

    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8mb4
    
    [mysqld]
    # 设置3308端口
    port = 3308
    # 设置mysql的安装目录
    basedir=D:\mysql-5.7.25-win32
    # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
    datadir=D:\mysql-5.7.25-win32\data3308
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8mb4
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    explicit_defaults_for_timestamp=true
    log-error=D:\mysql-5.7.25-win32\mysql3308.err
    pid-file=D:\mysql-5.7.25-win32\mysqld3308.pid
    socket =D:\mysql-5.7.25-win32\mysql3308.sock

    将每个MySQL实例注册成Windows服务

    D:\mysql-5.7.25-win32\bin>mysqld --install mysqld1 --defaults-file=D:\mysql-5.7.25-win32\my3307.cnf
    Service successfully installed.
    
    
    D:\mysql-5.7.25-win32\bin>mysqld --install mysqld2 --defaults-file=D:\mysql-5.7.25-win32\my3308.cnf
    Service successfully installed.

    启动服务

    C:\Users\Administrator>net start mysqld1

    mysqld1 服务正在启动 .

    mysqld1 服务已经启动成功。

    C:\Users\Administrator>net start mysqld2

    mysqld2 服务正在启动 .

    mysqld2 服务已经启动成功。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

    您可能感兴趣的文章:
    • CentOS6.5 上部署 MySQL5.7.17 二进制安装以及多实例配置
    • MySQL多实例配置方案
    • Linux下安装Mysql多实例作为数据备份服务器实现多主到一从多实例的备份
    • 快速实现MySQL的部署以及一机多实例部署
    • 基于mysql多实例安装的深入解析
    • mysql使用mysqld_multi部署单机多实例的方法教程
    • shell使用mysqld_multi自动做多实例从库脚本
    上一篇:mysql随机抽取一定数量的记录实例讲解
    下一篇:MySQL主从同步中的server-id示例详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    如何在Windows中运行多个MySQL实例详解 如,何在,Windows,中,运行,