【MySQL】如何使用Shared-memory协议(Windows)连接MySQL数据库

news/2024/11/20 4:42:10/

文章目录

  • 【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连接方法

  1. 打开配置文件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```
  1. 重新启动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数据库的方法。


http://www.ppmy.cn/news/1044215.html

相关文章

妙鸭爆火给AI开发者的启示;最全LangChain资源库;LLM大学;大模型实践长文总结 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; AI全流程动画「剪刀石头布2」&#xff0c;以及幕后制作解析 BV1oV41137Vr BV1SG411Z77M 油管知名博主 Corridor Crew 用AI工具 Stable…

NOIP 2015 扫雷(mine)

扫雷&#xff08;mine&#xff09; 说明 扫雷游戏是一款十分经典的单机小游戏。在 n行 m 列的雷区中有一些格子含有地雷&#xff08;称之为地雷格&#xff09;&#xff0c;其他格子不含地雷&#xff08;称之为非地雷格&#xff09;。玩家翻开一个非地雷格时&#xff0c;该格将会…

测试TCP和UDP端口连接

文章目录 1.测试TCP和UDP端口连接状态1.1.查找命令是由那个软件包提供的1.2.安装测试端口所需的命令1.3.安装所需测试的应用1.4.启动服务1.5.查看端口1.6.测试TCP端口1.7.测试UDP端口1.8.关闭 nginx 服务1.9.开启防火墙测试161端口报错信息 1.测试TCP和UDP端口连接状态 准备环…

第二章MyBatis入门程序

入门程序 创建maven程序 导入MyBatis依赖。pom.xml下导入如下依赖 <dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><dependen…

Android kotlin系列讲解(入门篇)使用Intent在Activity之间穿梭

<<返回总目录 上一篇:Android kotlin系列讲解(入门篇)Activity的理解与基本用法 文章目录 1、使用显式Intent2、使用隐式Intent3、更多隐式Intent的用法4、向下一个Activity传递数据5、返回数据给上一个Activity1、使用显式Intent 你应该已经对创建Activity的流程比较…

C++学习笔记总结练习:primer 学习日志

文章目录 针对自己的引言学习内容c语言基础知识1.为什么要声明变量2.cout ,cin3.c 不容许一个函数定义嵌套到另一个函数的定义中。4.编译指令using5.c基本类型长度6.在定义常量时尽可能使用const 关键字而不用#define9.前缀递增符与后缀递增符的区别10.c中的cctype库11.c 中的s…

linux学习(文件描述符)[13]

所以fork的时候函数执行完毕&#xff0c;但是数据还在缓冲区中未刷新。 所以会有父子两份数据 在fork&#xff08;&#xff09;之前ffush&#xff08;&#xff09;&#xff08;c语言的接口&#xff0c;刷新缓冲区&#xff09;fflush(stdout)&#xff0c;就不会有重复 缓冲区的…

Android PowerManager的使用

唤醒锁定 如果需要使 CPU 保持运行状态&#xff0c;以便在设备进入休眠模式之前完成某项工作&#xff0c;可以使用“唤醒锁定” 。 添加权限 <uses-permission android:name"android.permission.WAKE_LOCK" />设置唤醒锁定 PowerManager powerManager (Po…