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

这篇文章主要给大家介绍了关于如何在Windows中运行多个MySQL实例的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

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

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

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

my3307.cnf文件内容如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

[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文件内容如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

[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.初始化新数据库

?

1

2

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.启动数据库

?

1

2

3

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.登录数据库修改密码

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

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.为了关闭数据库服务器,使用合适的端口号连接到每个实例执行下面的命令:

?

1

2

3

4

5

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文件内容如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

[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文件内容如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

[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设置如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

[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为每个服务注册正确的可执行程序:

?

1

2

3

4

5

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:

?

1

C:\\Users\\Administrator>net start mysqld1

mysqld1 服务正在启动 .

mysqld1 服务已经启动成功。

?

1

C:\\Users\\Administrator>net start mysqld2

mysqld2 服务正在启动 .

mysqld2 服务已经启动成功。

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

?

1

C:\\Users\\Administrator>net stop mysqld1

mysqld1 服务正在停止.

mysqld1 服务已成功停止。

?

1

C:\\Users\\Administrator>net stop mysqld2

mysqld2 服务正在停止.

mysqld2 服务已成功停止。

删除服务

?

1

2

3

4

5

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文件内容如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

[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文件内容如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

[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服务

?

1

2

3

4

5

6

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.

启动服务

?

1

C:\\Users\\Administrator>net start mysqld1

mysqld1 服务正在启动 .

mysqld1 服务已经启动成功。

?

1

C:\\Users\\Administrator>net start mysqld2

mysqld2 服务正在启动 .

mysqld2 服务已经启动成功。

总结

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

原文链接:http://www.jydba.net/在windows中运行多个mysql实例/

版权声明:本文(即:原文链接:https://www.qin1qin.com/catagory/14596/)内容由互联网用户自发投稿贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 630367839@qq.com 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年8月24日 下午12:43
下一篇 2022年8月24日 下午12:43
软件定制开发公司

相关阅读

发表回复

登录后才能评论
通知:禁止投稿所有关于虚拟货币,币圈类相关文章,发现立即永久封锁账户ID!