这么早Windows环境中运行多个MySQL

49次阅读
没有评论

共计 9607 个字符,预计需要花费 25 分钟才能阅读完成。

自动写代码机器人,免费开通

这么早 Windows 环境中运行多个 MySQL?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

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
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
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

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 服务已经启动成功。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-16发表,共计9607字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)