目录
[一.mysql - MySQL 命令⾏客⼾端](#一.mysql - MySQL 命令⾏客⼾端)
[1.mysql 客⼾端简介](#1.mysql 客⼾端简介)
[2.mysql 客⼾端选项](#2.mysql 客⼾端选项)
[4.mysql 客⼾端命令](#4.mysql 客⼾端命令)
一.mysql - MySQL 命令⾏客⼾端
1.mysql 客⼾端简介
- mysql是⼀个简单的 SQL shell, 可以输⼊命令和执⾏SQL语句,当执⾏SQL语句时,查询结果以ASCII 表格式显⽰
- mysql的基本使⽤⾮常简单,回顾⼀下连接数据库的⽅式,打开终端并输⼊以下命令:
bash
# 连接MySQL服务器,⻓选项格式
mysql --user=user_name --password [db_name]
# 短选项格式
mysql -uuser_name -p [db_name]
# 输⼊密码
Enter password: your_password
db_name是可选项,如果写了,那么登录进入客户端后会直接use这个数据库。
示例:

接下来我们详细介绍mysql 客⼾端的使⽤⽅法。
2.mysql 客⼾端选项
指定选项的⽅式
- 在mysql后⾯的命令⾏中列出选项
- 在mysql后⾯指定配置⽂件的路径,以便在程序启动时读取配置⽂件中的选项
- 使⽤环境变量中的选项
我们重点介绍第⼀和第⼆种场景。
mysql 客⼾端命令常⽤选项
|--------------------------|-----|----------------------------------------------------------------------------------------|
| 选项--⻓格式 | 短格式 | 说明 |
| --host | -h | --host= host_name , -h host_name 连接到指定主机上的 MySQL 服务 |
| --port | -P | --port= port_num , -P port_num TCP/IP 连接使⽤的端⼝号 |
| --user | -u | --user= user_name , -u user_name ⽤于连接到MySQL 服务器的⽤⼾名 |
| --password | -p | --password[= password ] , -p[ password ] ⽤于连接到MySQL 服务器的密码。可选,如果没有给出, 会提⽰⽤⼾输⼊ |
| --defaults-file | | --defaults-file= file_name 使⽤指定的选项⽂件。如果该⽂件不存在,则会发⽣错误。 |
| --default-character- set | | --default-character-set= charset_name charset_name 将作为 客⼾端和当前连接的默认字符集,例: utf8mb4 |
| --database | -D | --database= db_name , -D db_name 要使⽤的数据库 |
| --compress | -C | --compress , -C 如果可能,压缩客⼾端和服务器之间传输的所有信息 |
| --reconnect | | --reconnect 如果客⼾端与服务器的连接丢失,⾃动尝试重新连接 |
| --quick | -q | --quick , -q 不缓存查询结果,收到⼀⾏打印⼀⾏,如果输出被挂起,可能会降低服务器速度 |
| --protocol | | --protocol={TCP|SOCKET|PIPE|MEMORY} 用于连接到服务器的传输协议,默认为TCP |
| --delimiter | | --delimiter= str 设置SQL语句分隔符。默认值为分号 ( ; ) |
| --execute | -e | --execute= statement , -e statement 执⾏指定的SQL语句并退出。 |
| --version | -V | --version , -V 显⽰版本信息并退出。 |
| --help | -? | --help , -? 显⽰帮助信息并退出。 |
TIPS:
如果选项的值中包含空格,那么值需要包含在双引号中.
在命令⾏中使⽤选项
命令⾏中指定选项遵循以下规则:
- 选项应在程序名之后给出
- 选项以单破折号" - "或双破折号" -- "号开头, - 表⽰短格式, -- 表⽰⻓格式,例如:-?和 --help 都表⽰MySQL 程序显⽰他的帮助消息
bash
mysql -?
mysql --help
- 选项名称区分⼤⼩写。 -v 和 -V 都是合法的,但含义不同,它们分别是 --verbose 和 --version 选项的相应缩写形式
bash
# 以下两个等价
mysqld --verbose --help
mysqld -v -?
# 以下两个等价
mysql --version
mysql -V
- 某些选项需要在后⾯指定⼀个值。例如, -h 127.0.0.1 或 --host=127.0.0.1 表⽰向客⼾端程序指定 MySQL 服务器主机
bash
mysql -h 127.0.0.1
msyql --host=127.0.0.1
对于带值的⻓格式选项,通常⽤ = 符号分隔选项名称和值。对于带值的短选项,选项值可以紧跟在选项之后,也可以⽤空格隔开,例如: --host=127.0.0.1 、 -h127.0.0.1 和 -h 127.0.0.1 是等价的。 但是对于密码选项的短格式,如果要指定密码,选项与值之间不能有空格,如下所⽰:
bash
mysql -ptest # test表⽰密码,但没有指定要访问的数据库
mysql -p test # test 表⽰指定了访问的数据库,但没有指定密码
TIPS:
在命令⾏中,第⼀个不带破折号 - 的值被解析为要访问的数据库名,所以 --database 选项⼀般可以省略。
- 在选项名称中,破折号 ( - ) 和下划线 ( _ ) 在⼤多数情况下可以互换使⽤,但前导破折号不能转为下划线,例如: --skip-grant-tables 和 --skip_grant_tables 是等价的。
- 对于采⽤数值的选项,该值可以带有后缀 K , M 或 G 以指⽰乘数 1024、1024^2或 1024^3,例如,以下命令告诉 mysqladmin对服务器执⾏ 1024 次 ping,每次 ping 之间休眠 3 秒
bash
mysqladmin --count=1K --sleep=3 ping -uroot -p
- 在命令⾏中包含空格的选项值必须⽤引号引起来。例如, --execute (or -e ) 选项与mysql⼀起使⽤时,表⽰将⼀个或多个 SQL 语句发送给服务器执⾏并显⽰结果
bash
mysql -u root -p -e "SELECT VERSION();SELECT NOW();"

3.选项(配置)⽂件
⼤多数 MySQL 程序都可以从选项⽂件(配置⽂件)中读取启动选项。可以在选项⽂件中指定常⽤选项,这样就不⽤在每次运⾏程序时都在命令⾏中输⼊它们。⼤部分选项⽂件都是纯⽂本格式,可以使⽤任何⽂本编辑器创建。
使⽤⽅法
选项 --defaults-file 可以指定要使⽤的选项⽂件,客⼾端程序会读取并应⽤选项⽂件中的相关配置。
bash
# Linux
mysql --defaults-file=/etc/mysql/my.cnf -uroot -p
# windows下
mysql "--defaults-file=C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" -uroot -p
选项⽂件位置及加载顺序
MySQL 按以下表格中的顺序查找并读取选项⽂件。如果⽂件不存在则需要⼿动创建。
读取顺序从上到下,后读取的⽂件中配置的选项优先级越⾼
在 Windows 系统读取选项⽂件
|-----------------------------------------|------------------------------------------|
| ⽂件名 | 说明 |
| %WINDIR%\my.ini , %WINDIR%\my.cnf | 全局 |
| C:\my.ini , C:\my.cnf | 全局 |
| BASEDIR \my.ini , BASEDIR \my.cnf | 全局 |
| defaults-extra-file | 如果存在其他选项⽂件可以通过 --defaults-extra-file选项指定 |
| %APPDATA%\MySQL\.mylogin.cnf | 登录路径选项(仅限客⼾端) |
| DATADIR \mysqld-auto.cnf | 系统变量(仅限服务器) |
- %WINDIR% 表⽰ Windows ⽬录的位置,可以通过命令查看

- BASEDIR表⽰ MySQL 的安装⽬录
bash
C:\Program Files\MySQL\MySQL Server 8.0
- %APPDATA% 表⽰应⽤程序数据的⽬录

- DATADIR代表MySQL数据⽬录
bash
C:\Program Files\MySQL\MySQL Server 8.0
TIPS:
使⽤ MySQL Installer 安装MySQL成功后, my.ini 默认在该⽬录下。
在 Unix 和 Linux 系统上读取的选项⽂件
|--------------------------|-------------------------------------------|
| ⽂件名 | 说明 |
| /etc/my.cnf | 全局 |
| /etc/mysql/my.cnf | 全局 |
| $MYSQL_HOME/my.cnf | 服务器特定选项(仅限服务器) |
| defaults-extra-file | 如果存在其他选项⽂件可以通过 --defaults-extra-file 选项指定 |
| ~/.my.cnf | ⽤⼾特定选项 |
| ~/.mylogin.cnf | ⽤⼾特定的登录路径选项(仅限客⼾端) |
| DATADIR /mysqld-auto.cnf | 系统变量 (仅限服务器) |
- ~表示当前用户主目录
- MYSQL_HOME是设置的环境变量路径
- DATADIR代表MySQL数据目录
mysqld-auto.cnf的优先级最⾼
For the server, one exception applies: The mysqld-auto.cnf option file in the data directory is processed last, so it takes precedence even over command-line options.
选项⽂件语法
- 运⾏ MySQL 程序时在命令⾏上指定的任何⻓选项都可以在选项⽂件中指定,要获取选项列表可以使⽤如下命令
bash
# 客⼾端程序
root@guangchen-vm:~# mysql --help
# 服务端程序
root@guangchen-vm:~# mysqld --verbose --help
- 选项⽂件中指定选项时,省略两个前导破折号,并且每⼀⾏表⽰⼀个选项
例如: --quick 和 --host=127.0.0.1 在选项⽂件中应表⽰成 quick 和 host=127.0.0.1
- 选项⽂件中的空⾏会被忽略。⾮空⾏可以采⽤以下任何形式:
#comment, ;comment
注释⾏以 # 或 ; 开,注释可以从⼀⾏的中间开始
[ group]
设置选项的程序或组的名称,不区分⼤⼩写。如果选项组名称与程序名称相同,则组中的选项专⻔应⽤于该程序,例如, [mysqld] 和 [mysql] 组分别适⽤于mysqld服务端程序和mysql客⼾端程序。
opt_name
相当于命令⾏上的选项名
opt_name= value
选项名对应的值,可以使⽤转义序列 \b , \t , \n , \r , \\ 和 \s 来表⽰退格符、制表符、换⾏符、回⻋符、反斜杠和空格字符。
TIPS:
- 选项名称和值中的前导和尾随空格会⾃动删除
- 在windows系统中设置路径应该使⽤转义字符
bash
basedir="C:\\Program Files\\MySQL\\MySQL Server 8.0"
# 或
basedir="C:/Program Files/MySQL/MySQL Server 8.0"
client\] MySQL发⾏版中所有客⼾端程序都会读取并应⽤这个组下的选项(除了mysqld),在这个组下可以指定适⽤于所有客⼾端程序的通⽤选项,例如配置⽤⼾名和密码(但要确保只有⾃⼰才可以访问这个⽂件以防⽌密码泄漏)。 ```bash # 在当前⽤⼾的home⽬录下创建.my.cnf,并在[client]写⼊公共配置 # 这⾥主要设置⽤了主机、端⼝、⽤⼾名、密码 root@guangchen-vm:~# vim .my.cnf [client] host=127.0.0.1 port=3306 user=root password=123456 ``` # 直接运⾏mysql,不⽤输⼊⽤⼾名密码可以直接成功登录  可以通过 \[客⼾端程序名\] 的形式为不同的客⼾端程序指定选项,例如 \[mysql\] ,当运⾏mysql程序时会读取并应⽤该组下的配置,如果选项名与 \[client\] 重复, \[client\] 中的选项将会被覆盖。 ```bash root@guangchen-vm:~# cat .my.cnf [client] host=127.0.0.1 port=3306 user=root password=123456 # 设置为必须输⼊密码 [mysql] password ```  为特定 MySQL 版本设置选项可以使⽤ \[mysqld-5.7\] 、 \[mysqld-8.0\] 的组名。 在选项⽂件中使⽤ !include 指令来包含其他选项⽂件,例如: !include /home/mydir/myopt.cnf 在选项⽂件中使⽤ !include 指令来包含其他选项⽂件,例如: !include /home/mydir/myopt.cnf 在选项⽂件中使⽤ !includedir 指令来搜索指定⽬录中的其他选项⽂件,例如: !includedir /home/mydir ,但不保证⽬录中选项⽂件的读取顺序 TIPS: 1. !includedir 在 Unix和Linux 操作系统中会搜索指定⽬录下任何以 .cnf 为后缀的⽂件.在 Windows 中,会搜索指定⽬录下任何以 .ini 或 .cnf 为后缀的⽂件 2. 只会读取包含⽂件中当前客⼾端的组配置,例如当前运⾏的是mysql程序,那么只会读取\[mysql\]组中的选项配置 **在 Windows中请确保在配置⽂件的最后⼀⾏加⼀个换⾏符,否则该⾏将被忽略。** **案例:设置客⼾端全局编码格式** * 在Linux下编辑全局配置⽂件默认位置 /etc/mysql/my.cnf ,初始内容如下: ```bash # # The MySQL database server configuration file. # # You can copy this to one of: # - "/etc/mysql/my.cnf" to set global options, # - "~/.my.cnf" to set user-specific options. # # One can use all long options that the program supports. # Run program with --help to get a list of available options and with # --print-defaults to see which it would actually understand and use. # # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html # # * IMPORTANT: Additional settings that can override those from this file! # The files must end with '.cnf', otherwise they'll be ignored. # !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/ [client] default-character-set=utf8 [mysql] default-character-set=utf8 ``` * 在已有内容下⽅输⼊相应的配置,我们要为客⼾端设置全局的编码格式为utf8mb4, 那么在\[client\] 节点下指定相应的选项即可 ```bash [client] # 所有客⼾端程序者会读取这个节点下的配置信息 default-character-set=utf8mb4 # 指定编码格式为utf8mb4 ``` ### 4.mysql 客⼾端命令 * 使⽤mysql客⼾端程序连接到数据库服务器之后,可以发送SQL语句到服务器执⾏,并以 ";"(分号)、\\g 或 \\G结束 TIPS: 1. ; 与 \\g 结束表⽰以表格形式展⽰结果 2. \\G 结束表⽰以⾏形式展⽰结果 3. 如果当前已经输⼊了⼀部分SQL 语句想重新输⼊可以输⼊Control+C中断当前输⼊ * 在当前模式下,mysql还有⼀组⾃⼰的命令,可以输⼊ help or \\h 查看命令列表  * 使⽤help contents命令可以查看关于MySQL数据库使⽤的具体帮助,包括⽤⼾管理、SQL语法、数据类型、组件等相关内容列表  * 通过help contents中的具体条⽬查看介绍,例如: help Data Types  * 继续输⼊help 具体的条⽬ 查看关于此条⽬的详细说明,例如:help BIT 