【MySQL】如何使用Named Pipe协议(Windows)连接MySQL数据库

文章目录

  • 【MySQL】如何使用Named Pipe协议(Windows)连接MySQL数据库
    • 连接MySQL的协议
    • 使用Named Pipe协议(Windows)连接MySQL
      • 步骤1:确认MySQL服务器已启用Named Pipe连接
        • 启动Named Pipe连接方法
      • 步骤2:客户端使用Named Pipe连接MySQL服务器。
        • 例1:客户端使用Named Pipe连接MySQL服务器
        • 例2:客户端指定Socket使用Named Pipe连接MySQL服务器
      • 常见错误
    • 小结

MySQL入门02:关于MySQL连接的ABC
【MySQL】如何使用Named Pipe协议(Windows)连接MySQL数据库
【MySQL】如何使用Shared-memory协议(Windows)连接MySQL数据库
【MySQL】如何使用Unix Sockets 协议连接MySQL数据库

【MySQL】如何使用Named Pipe协议(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

使用Named Pipe协议(Windows)连接MySQL

在Windows环境中,和Unix Sockets连接MySQL相似,可以用Named Pipe协议连接MySQL。
下面介绍如何使用Named Pipe连接MySQL的步骤。

步骤1:确认MySQL服务器已启用Named Pipe连接

查看是否启用Named Pipe连接。

mysql> SHOW GLOBAL VARIABLES LIKE 'named_pipe';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| named_pipe    | OFF   |
+---------------+-------+
1 row in set, 1 warning (0.04 sec)

mysql>

如果值是ON,则表示启用;OFF表示禁用状态。

启动Named Pipe连接方法

  1. 打开配置文件my.ini,将enable-named-pipe变量和socket变量前的注释去掉并保存。

例:

# The next three options are mutually exclusive to SERVER_PORT below.
# skip-networking
enable-named-pipe
# shared-memory

# shared-memory-base-name=MYSQL

# The Pipe the MySQL Server will use.
socket=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.查看Named Pipe连接启用状态。

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

Copyright (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 GLOBAL VARIABLES LIKE 'named_pipe';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| named_pipe    | ON    |
+---------------+-------+
1 row in set, 1 warning (0.01 sec)

mysql> SHOW  VARIABLES LIKE 'socket';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| socket        | MYSQL |
+---------------+-------+
1 row in set, 1 warning (0.01 sec)

mysql> exit
Bye

步骤2:客户端使用Named Pipe连接MySQL服务器。

例1:客户端使用Named Pipe连接MySQL服务器

通过指定–protocol=pipe,客户端可以使用Named Pipe连接MySQL服务器。

C:\Users\Administrator>mysql --protocol=pipe -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 - GPL

Copyright (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:             Named pipe: MySQL
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    gbk
Conn.  characterset:    gbk
UNIX socket:            MySQL
Binary data as:         Hexadecimal
Uptime:                 7 min 22 sec

Threads: 2  Questions: 16  Slow queries: 0  Opens: 137  Flush tables: 3  Open tables: 56  Queries per second avg: 0.036
--------------

mysql>

不指定Socket的时候,会使用默认的Named pipe: MySQL。

例2:客户端指定Socket使用Named Pipe连接MySQL服务器

C:\Users\Administrator>mysql --protocol=pipe -u root -p --socket=MYSQL
Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.28 MySQL Community Server - GPL

Copyright (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:          11
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:             Named pipe: MYSQL
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    gbk
Conn.  characterset:    gbk
UNIX socket:            MYSQL
Binary data as:         Hexadecimal
Uptime:                 13 min 4 sec

Threads: 2  Questions: 25  Slow queries: 0  Opens: 138  Flush tables: 3  Open tables: 57  Queries per second avg: 0.031
--------------

mysql> exit
Bye

常见错误

当服务器Named Pipe连接未启用的时候,使用Named Pipe连接会报如下的错误:

C:\Users\Administrator>mysql --protocol=pipe -u root -prootroot
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2017 (HY000): Can't open named pipe to host: .  pipe: MySQL (2)

可参考如上的方法在服务器端进行相应的配置。

小结

本文介绍了在Windows环境中,如何使用Named Pipe协议连接MySQL数据库的方法。

你可能感兴趣的:(MySQL入门与精通,数据库,mysql,windows)