文章目录
- 【MySQL】如何使用Shared-memory协议(Windows)连接MySQL数据库
- 连接MySQL的协议
- 使用Shared-memory协议(Windows)连接MySQL
- 步骤1:确认MySQL服务器已启用Shared-memory连接
- 启动Shared-memory连接方法
- 步骤2:客户端使用shared-memory连接MySQL服务器。
- 例1:客户端使用shared-memory连接MySQL服务器
- 例2:默认连接MySQL服务器
- 常见错误
- 小结
【MySQL】如何使用Shared-memory协议(Windows)连接MySQL数据库
连接MySQL的协议
在MySQL中可以通过指定 --protocol参数,选择连接MySQL的协议。
连接协议(Connection Protocals):
--protocol={TCP|SOCKET|PIPE|MEMORY}TCP/IP (ALL) -Transmission Control Protocal/Internet Protocal-Connection:local & remote-Supports Clasic & X protocol
Socket file (Unix including Linux/Mac) -Connection:local -Supports Clasic & X protocol
Named Pipe (Win) -Connection:local -Supports Clasic
Shared Memory (Win) -Connection:local -Supports Clasic
参考:
https://dev.mysql.com/doc/refman/8.0/en/connection-options.html#option_general_protocol
>4.2.3 Command Options for Connecting to the Server
使用Shared-memory协议(Windows)连接MySQL
在Windows环境中支持共享内存(Shared-memory)连接连接MySQL。
如果服务器启用了Shared-memory连接,客户端就可以通过使用–protocol=MEMORY选项使用Shared-memory连接MySQL。
使用Shared-memory协议(Windows)连接MySQL时,能够提高MySQL的性能,具体测评请参考如下官方链接的介绍。
参考:
Improving the Performance of MySQL on Windows
https://dev.mysql.com/blog-archive/improving-the-performance-of-mysql-on-windows/
步骤1:确认MySQL服务器已启用Shared-memory连接
查看是否启用Shared-memory连接。
mysql> show variables like 'shared_memory';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| shared_memory | OFF |
+---------------+-------+
1 row in set, 1 warning (0.03 sec)mysql>
如果值是ON,则表示启用;OFF表示禁用状态。
启动Shared-memory连接方法
- 打开配置文件my.ini,将shared-memory变量和shared-memory-base-name变量前的注释去掉并保存。
例:
# The next three options are mutually exclusive to SERVER_PORT below.
# skip-networking
# enable-named-pipeshared-memoryshared-memory-base-name=MYSQL
※ my.ini文件的位置可以通过【mysql --help】命令中的Default options内容查看。
例:
Default options are read from the following files in the given order:
C:\windows\my.ini C:\windows\my.cnf C:\my.ini C:\my.cnf E:\Soft\MySQL8.0\my.ini E:\Soft\MySQL8.0\my.cnf```
- 重新启动MySQL服务器。
net stop <MySQL服务名>
net start <MySQL服务名>
例:
C:\Users\Administrator>net stop mysql80
MySQL80 服务正在停止.
MySQL80 服务已成功停止。C:\Users\Administrator>net start mysql80
MySQL80 服务正在启动 ..
MySQL80 服务已经启动成功。
3.查看shared-memory连接启用状态。
C:\Users\Administrator>mysql -u root -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.28 MySQL Community Server - GPLCopyright (c) 2000, 2022, Oracle and/or its affiliates.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> show variables like 'shared_memory';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| shared_memory | ON |
+---------------+-------+
1 row in set, 1 warning (0.01 sec)mysql>
步骤2:客户端使用shared-memory连接MySQL服务器。
例1:客户端使用shared-memory连接MySQL服务器
通过指定–protocol=MEMORY,客户端可以使用shared-memory连接MySQL服务器。
C:\Users\Administrator>mysql --protocol=MEMORY -u root -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.28 MySQL Community Server - GPLCopyright (c) 2000, 2022, Oracle and/or its affiliates.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> \s
--------------
mysql Ver 8.0.28 for Win64 on x86_64 (MySQL Community Server - GPL)Connection id: 9
Current database:
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 8.0.28 MySQL Community Server - GPL
Protocol version: 10
Connection: Shared memory: MYSQL
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: gbk
Conn. characterset: gbk
TCP port: 0
Binary data as: Hexadecimal
Uptime: 1 min 58 secThreads: 2 Questions: 12 Slow queries: 0 Opens: 134 Flush tables: 3 Open tables: 53 Queries per second avg: 0.101
--------------mysql>
例2:默认连接MySQL服务器
启用shared-memory连接后,不指定–protocol时本地连接也会使用shared-memory连接MySQL服务器。
C:\Users\Administrator>mysql -u root -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.28 MySQL Community Server - GPLCopyright (c) 2000, 2022, Oracle and/or its affiliates.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> \s
--------------
mysql Ver 8.0.28 for Win64 on x86_64 (MySQL Community Server - GPL)Connection id: 10
Current database:
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 8.0.28 MySQL Community Server - GPL
Protocol version: 10
Connection: Shared memory: MYSQL
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: gbk
Conn. characterset: gbk
TCP port: 0
Binary data as: Hexadecimal
Uptime: 3 min 52 secThreads: 2 Questions: 17 Slow queries: 0 Opens: 134 Flush tables: 3 Open tables: 53 Queries per second avg: 0.073
--------------mysql>
常见错误
当服务器shared memory连接未启用的时候,使用shared memory连接会报如下的错误:
C:\Users\Administrator>mysql --protocol=MEMORY -u root -p
Enter password: ********
ERROR 2038 (HY000): Can't open shared memory; client could not create request event (2)
可参考如上的方法在服务器端进行相应的配置。
小结
本文介绍了在Windows环境中,如何使用shared memory协议连接MySQL数据库的方法。