这篇文章主要讲解了“怎么在Windows中运行多个MySQL”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在Windows中运行多个MySQL”吧!

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数据库的数据的存放目录,MySQL8+不需要以下配置,系统自己生成即可,否则有可能报错datadir=D:\mysql-5.7.25-win32\data3307#允许最大连接数max_connections=200#服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8mb4#创建新表时将使用的默认存储引擎default-storage-engine=INNODBexplicit_defaults_for_timestamp=truelog-error=D:\mysql-5.7.25-win32\mysql3307.errpid-file=D:\mysql-5.7.25-win32\mysqld3307.pidsocket=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数据库的数据的存放目录,MySQL8+不需要以下配置,系统自己生成即可,否则有可能报错datadir=D:\mysql-5.7.25-win32\data3308#允许最大连接数max_connections=200#服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8mb4#创建新表时将使用的默认存储引擎default-storage-engine=INNODBexplicit_defaults_for_timestamp=truelog-error=D:\mysql-5.7.25-win32\mysql3308.errpid-file=D:\mysql-5.7.25-win32\mysqld3308.pidsocket=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\data3307D:\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.cnfD:\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?KinrdWHbmysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis6Serverversion:5.7.25Copyright(c)2000,2019,Oracleand/oritsaffiliates.Allrightsreserved.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>ALTERUSER'root'@'localhost'IDENTIFIEDBY'123456';QueryOK,0rowsaffected(0.00sec)mysql>exitByeC:\Users\Administrator>mysql--port=3307--host=127.0.0.1--user=root--password=123456mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis7Serverversion:5.7.25SourcedistributionCopyright(c)2000,2019,Oracleand/oritsaffiliates.Allrightsreserved.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>exitC:\Users\Administrator>mysql--port=3308--host=127.0.0.1--user=rootEnterpassword:************WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis8Serverversion:5.7.25Copyright(c)2000,2019,Oracleand/oritsaffiliates.Allrightsreserved.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>ALTERUSER'root'@'localhost'IDENTIFIEDBY'123456';QueryOK,0rowsaffected(0.00sec)mysql>exitByeC:\Users\Administrator>mysql--port=3308--host=127.0.0.1--user=root--password=123456mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis9Serverversion:5.7.25SourcedistributionCopyright(c)2000,2019,Oracleand/oritsaffiliates.Allrightsreserved.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>

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

C:\Users\Administrator>mysqladmin--port=3307--host=127.0.0.1--user=root--password=123456shutdownmysqladmin:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.C:\Users\Administrator>mysqladmin--port=3308--host=127.0.0.1--user=root--password=123456shutdownmysqladmin:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.

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

[mysql]#设置mysql客户端默认字符集default-character-set=utf8mb4[mysqld]#设置3307端口port=3307#设置mysql的安装目录basedir=D:\mysql-5.7.25-win32#设置mysql数据库的数据的存放目录,MySQL8+不需要以下配置,系统自己生成即可,否则有可能报错datadir=D:\mysql-5.7.25-win32\data3307#允许最大连接数max_connections=200#服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8mb4#创建新表时将使用的默认存储引擎default-storage-engine=INNODBexplicit_defaults_for_timestamp=truelog-error=D:\mysql-5.7.25-win32\mysql3307.errpid-file=D:\mysql-5.7.25-win32\mysqld3307.pidenable-named-pipesocket=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数据库的数据的存放目录,MySQL8+不需要以下配置,系统自己生成即可,否则有可能报错datadir=D:\mysql-5.7.25-win32\data3308#允许最大连接数max_connections=200#服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8mb4#创建新表时将使用的默认存储引擎default-storage-engine=INNODBexplicit_defaults_for_timestamp=truelog-error=D:\mysql-5.7.25-win32\mysql3308.errpid-file=D:\mysql-5.7.25-win32\mysqld3308.pidsocket=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数据库的数据的存放目录,MySQL8+不需要以下配置,系统自己生成即可,否则有可能报错datadir=D:\mysql-5.7.25-win32\data3307#允许最大连接数max_connections=200#服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8mb4#创建新表时将使用的默认存储引擎default-storage-engine=INNODBexplicit_defaults_for_timestamp=truelog-error=D:\mysql-5.7.25-win32\mysql3307.errpid-file=D:\mysql-5.7.25-win32\mysqld3307.pidsocket=D:\mysql-5.7.25-win32\mysql3307.sock[mysqld2]#设置3308端口port=3308#设置mysql的安装目录basedir=D:\mysql-5.7.25-win32#设置mysql数据库的数据的存放目录,MySQL8+不需要以下配置,系统自己生成即可,否则有可能报错datadir=D:\mysql-5.7.25-win32\data3308#允许最大连接数max_connections=200#服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8mb4#创建新表时将使用的默认存储引擎default-storage-engine=INNODBexplicit_defaults_for_timestamp=truelog-error=D:\mysql-5.7.25-win32\mysql3308.errpid-file=D:\mysql-5.7.25-win32\mysqld3308.pidsocket=D:\mysql-5.7.25-win32\mysql3308.sock

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

D:\mysql-5.7.25-win32\bin>mysqld--installmysqld1Servicesuccessfullyinstalled.D:\mysql-5.7.25-win32\bin>mysqld--installmysqld2Servicesuccessfullyinstalled.

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

C:\Users\Administrator>netstartmysqld1mysqld1服务正在启动.mysqld1服务已经启动成功。C:\Users\Administrator>netstartmysqld2mysqld2服务正在启动.mysqld2服务已经启动成功。为了停止MySQL服务,使用服务管理器或者使用netstopservicename:C:\Users\Administrator>netstopmysqld1mysqld1服务正在停止.mysqld1服务已成功停止。C:\Users\Administrator>netstopmysqld2mysqld2服务正在停止.mysqld2服务已成功停止。

删除服务

D:\mysql-5.7.25-win32\bin>mysqld--removemysqld1Servicesuccessfullyremoved.D:\mysql-5.7.25-win32\bin>mysqld--removemysqld2Servicesuccessfullyremoved.

方法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数据库的数据的存放目录,MySQL8+不需要以下配置,系统自己生成即可,否则有可能报错datadir=D:\mysql-5.7.25-win32\data3307#允许最大连接数max_connections=200#服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8mb4#创建新表时将使用的默认存储引擎default-storage-engine=INNODBexplicit_defaults_for_timestamp=truelog-error=D:\mysql-5.7.25-win32\mysql3307.errpid-file=D:\mysql-5.7.25-win32\mysqld3307.pidenable-named-pipesocket=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数据库的数据的存放目录,MySQL8+不需要以下配置,系统自己生成即可,否则有可能报错datadir=D:\mysql-5.7.25-win32\data3308#允许最大连接数max_connections=200#服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8mb4#创建新表时将使用的默认存储引擎default-storage-engine=INNODBexplicit_defaults_for_timestamp=truelog-error=D:\mysql-5.7.25-win32\mysql3308.errpid-file=D:\mysql-5.7.25-win32\mysqld3308.pidsocket=D:\mysql-5.7.25-win32\mysql3308.sock

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

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

启动服务

C:\Users\Administrator>netstartmysqld1mysqld1服务正在启动.mysqld1服务已经启动成功。C:\Users\Administrator>netstartmysqld2mysqld2服务正在启动.mysqld2服务已经启动成功。

感谢各位的阅读,以上就是“怎么在Windows中运行多个MySQL”的内容了,经过本文的学习后,相信大家对怎么在Windows中运行多个MySQL这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!