MySQL技术内幕InnoDB存储引擎 - 连接Mysql
连接Mysql操作的本质是:
一个进程和Mysql实例进程的通信。
进程通信的方式有:共享内存、管道、命名管道、命令字、TCP\IP套接字、UNIX域套接字。
TCP\IP
mysql -h 192.168.0.101 -u root -p
在通过 TCP/IP 连接到 MySQL 实例时, MySQL 数据库 先检查一张权限视图,
用来判断 起请求的客户 IP 是否允许连 MySQL 实例。
该视图在Mysql架构下,表名为 user:
SELECT host , user, password FROM mysql.user; +-----------+------+-------------------------------------------+ | host | user | password | +-----------+------+-------------------------------------------+ | localhost | root | | | 127.0.0.1 | root | | | ::1 | root | | | localhost | | | | localhost | test | *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29 | | % | test | *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29 | +-----------+------+-------------------------------------------+ 6 rows in set
上表中的host 表示 该用户允许从哪些来源IP发起登录请求。
命名管道和共享内存
在Windows机器上,如果客户端和服务器进程在同一台机器上,则可以使用命令管道的方式进行登录。
这点和MS SqlServer有点类似。
- 命令管道登录:
在配置文件中启用 --enable-named-pipe 选项
- 共享内存登录:
在配置文件中添加 --shared-memory 选项
MySQL 客户端还必须使用 --protocol=memory 选项
UNIX 域套接字
在 Linux 和 UNIX 下,可以使用这种方式。
UNIX域套接字其实不是一个网络协议,所以客户端和服务器进程也需要在同一台机器上。
该登录方式需要在配置文件中指定套接字文件的路径:
服务端: [mysqld] 下配置: socket = /tmp/mysql.sock
客户端: 连接时使用:mysql -uroot - S /tmp/mysql.sock
[mysqld]
浙公网安备 33010602011771号