在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 服務已經啟動成功。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2661918/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux中執行多個MySQL例項LinuxMySql
- MySQL在Windows上安裝多個例項的方法MySqlWindows
- java多執行緒例項Java執行緒
- Qt中的多執行緒與執行緒池淺析+例項QT執行緒
- 在同一臺計算機中執行多個MySQL服務計算機MySql
- Java多執行緒2:Thread中的例項方法Java執行緒thread
- mysqld_multi安裝多個mysql例項MySql
- mysqld_multi啟動多個mysql例項MySql
- dddsample一個可執行的例項
- c++11多執行緒入門例項C++執行緒
- C#多執行緒程式設計例項C#執行緒程式設計
- 一個例項中,多個synchronized方法的呼叫synchronized
- mysql搭建多個例項(mysqld_multi的使用)MySql
- windows 系統下 workerman 在同一個執行視窗中開啟多個 websocket 服務WindowsWeb
- 在Docker中,可以在一個容器中同時執行多個應用程序嗎?Docker
- Win10 Redstone 4允許執行多個UWP應用程式例項Win10
- 使用 Terminator 在一個視窗中執行多個終端
- 一臺MySQL資料庫啟動多個例項MySql資料庫
- docker redis 多個例項DockerRedis
- 【RAC】rac中如何指定job的執行例項
- 【多執行緒與高併發3】常用鎖例項執行緒
- 在 React 中管理同一元件的多個例項中的狀態React元件
- Java中一個物件在多執行緒中是共享的Java物件執行緒
- 掌握C#中的GUI多執行緒技巧:WinForms和WPF例項詳解C#GUI執行緒ORM
- pytest(13)-多執行緒、多程式執行用例執行緒
- 多個mapreduce連線例項
- 在oracle 叢集多例項中執行並行操作Oracle並行
- 使用Portainer集中管理多地域內網執行的Docker例項AI內網Docker
- Python3多執行緒爬蟲例項講解Python執行緒爬蟲
- Python多執行緒非同步任務佇列(例項)Python執行緒非同步佇列
- 多執行緒併發鎖分類以及簡單例項執行緒單例
- pytest多程式/多執行緒執行測試用例執行緒
- Activiti的流程例項【ProcessInstance】與執行例項【Execution】
- oracle一個例項配置多個listener或多個埠Oracle
- mysql一次執行多個SQL檔案MySql
- Java經典例項:在文字中匹配換行符Java
- java多執行緒結合單例模式例項,簡單實用易理解Java執行緒單例模式
- java在windows下執行JavaWindows