一、MySQL客户端介绍

MySQL部署完成后,通常使用命令行或第三方工具连接服务进行管理。第三方工具除了官方出品的workbench,还有SQLyog、Navicat等。而命令行工具mysql则是官方出品,由mysql-client这个安装包所提供。

1、mysql客户端工具常用选项

-u:指定登录MySQL的用户名,不写的话默认是使用root用户

-p:小写,用于填写登录MySQL用户的密码,如果无密码的话可不加该选项,该选项后面跟的密码不能用空格来隔开,如果在该选项后加了空格,系统会认为空格后面的字符是数据库的库名

-h:指定MySQL服务器的IP,连接本地服务器的话可不加该选项

-S:指定socket文件路径,比如在my.cnf中的[mysqld]模块中定义了socket路径,但是使用mysql客户端和mariadb客户端连接数据库时,检查的socket文件路径不一样,这样有可能导致无法连接的情况,用该选项可以手动指定

-e:直接执行后面指定的命令然后退出客户端,用于非交互式操作

-P:大写,指定MySQL端口号,不加该选项的话默认连接3306端口

2、mysql客户端示例

mysql -uroot -p #在交互窗口输入用户密码

mysql -u root -p123456 #直接指定了root用户密码,不需要再通过交互窗口输入,注意-p后面不要有空格

mysql -uroot -p123456 -h192.168.0.100 -P3307

mysql -uroot -p123456 -h192.168.0.100 -P3307 -e "create database test;"

二、SQL的执行过程

客户端在连接MySQL并提交语句时,需要经过一系列的模板处理,大概如图:

Mysql打开客户端 如何打开mysql客户端_客户端

1、连接器

客户端做任何操作前的第一步必须是先连接到数据库,所以这时候先经过连接器这个模块。而这个连接器通常就是mysql客户端了。连接成功后如果客户端没有后续操作,则连接处于Sleep空闲状态。执行show processlist命令时Command 列显示为Sleep就表示该客户端为空闲连接。

mysql -h$ip -P$port -u$user -p

2、查询缓存

MySQL收到客户端发起的查询请求后会先判断是否在查询缓存中有执行过这条语句,之前执行过的语句及其结果会缓存在内存中。如果能够直接在缓存中找到就会被直接返回给客户端,提升效率。如果不在查询缓存中才会开始继续后面的执行阶段。执行完成后的结果也会被存入查询缓存中。

3、分析器

判断SQL是否存在语法问题,如果错误就会出现You have an error in your SQL syntax的提示,一般语法错误会提示第一个出现错误的位置,所以关注的是紧接“use near”的内容

4、优化器

当表里面有多个索引的时候,由优化器决定使用哪个索引;或者在一个语句使用join进行多表关联时决定各个表的连接顺序。优化器阶段完成后就是最后的执行器阶段了。

5、执行器

开始执行SQL