目录
一、程序介绍
二、mysqld--mysql服务器介绍
三、mysql - MySQL 命令行客户端
3.1 客户端介绍
3.2 mysql 客户端选项
指定选项的方式
mysql 客户端命令常用选项
在命令行中使用选项
选项(配置)文件
使用方法
选项文件位置及加载顺序
选项文件语法
使用举例:为所有客户端设置字符编码集
3.3 mysql客户端命令
一、程序介绍
当MySQL安装完成后,除了我们常用的mysql客户端程序,通常还会包含如下程序,本篇博客就来介绍一下常用的一些程序的作用和使用
- Linux系统程序⼀般在 /usr/bin 目录下,可以通过命令查看:
zyq@iZm5egpp4a85g2tfliaeikZ:~$ ll /usr/bin/mysql*
-rwxr-xr-x 1 root root 7681264 Oct 23 20:15 /usr/bin/mysql*
-rwxr-xr-x 1 root root 7519248 Oct 23 20:15 /usr/bin/mysqladmin*
lrwxrwxrwx 1 root root 10 Oct 23 20:15 /usr/bin/mysqlanalyze -> mysqlcheck*
-rwxr-xr-x 1 root root 7992592 Oct 23 20:15 /usr/bin/mysqlbinlog*
-rwxr-xr-x 1 root root 7528208 Oct 23 20:15 /usr/bin/mysqlcheck*
-rwxr-xr-x 1 root root 6617008 Oct 23 20:15 /usr/bin/mysql_config_editor*
-rwxr-xr-x 1 root root 27367 Oct 23 20:15 /usr/bin/mysqld_multi*
-rwxr-xr-x 1 root root 29137 Oct 23 20:15 /usr/bin/mysqld_safe*
-rwxr-xr-x 1 root root 7603760 Oct 23 20:15 /usr/bin/mysqldump*
-rwxr-xr-x 1 root root 7719 Oct 23 20:15 /usr/bin/mysqldumpslow*
-rwxr-xr-x 1 root root 7515472 Oct 23 20:15 /usr/bin/mysqlimport*
-rwxr-xr-x 1 root root 7594928 Oct 23 20:15 /usr/bin/mysql_migrate_keyring*
lrwxrwxrwx 1 root root 10 Oct 23 20:15 /usr/bin/mysqloptimize -> mysqlcheck*
-rwxr-xr-x 1 root root 7972176 Oct 23 20:15 /usr/bin/mysqlpump*
lrwxrwxrwx 1 root root 10 Oct 23 20:15 /usr/bin/mysqlrepair -> mysqlcheck*
-rwxr-xr-x 1 root root 39016 Jun 15 2023 /usr/bin/mysqlreport*
-rwxr-xr-x 1 root root 7503440 Oct 23 20:15 /usr/bin/mysql_secure_installation*
-rwxr-xr-x 1 root root 7514096 Oct 23 20:15 /usr/bin/mysqlshow*
-rwxr-xr-x 1 root root 7533104 Oct 23 20:15 /usr/bin/mysqlslap*
-rwxr-xr-x 1 root root 6639024 Oct 23 20:15 /usr/bin/mysql_ssl_rsa_setup*
-rwxr-xr-x 1 root root 6535344 Oct 23 20:15 /usr/bin/mysql_tzinfo_to_sql*
-rwxr-xr-x 1 root root 7615728 Oct 23 20:15 /usr/bin/mysql_upgrade*
- windows系统目录:你的安装路径 \MySQL Server 8.0\bin,可以通过命令查看:
C:\Program Files\MySQL\MySQL Server 8.0\bin>dir *.exe
2024/07/12 14:32 6,423,112 ibd2sdi.exe
2024/07/12 14:32 6,412,880 innochecksum.exe
2024/07/12 14:32 6,354,008 lz4_decompress.exe
2024/07/12 14:32 6,662,216 myisamchk.exe
2024/07/12 14:32 6,505,040 myisamlog.exe
2024/07/12 14:32 6,566,992 myisampack.exe
2024/07/12 14:32 6,544,464 myisam_ftdump.exe
2024/07/12 14:32 7,126,600 mysql.exe
2024/07/12 14:32 7,013,456 mysqladmin.exe
2024/07/12 14:32 7,397,456 mysqlbinlog.exe
2024/07/12 14:32 7,019,088 mysqlcheck.exe
2024/07/12 14:32 54,027,336 mysqld.exe
2024/07/12 14:32 7,086,160 mysqldump.exe
2024/07/12 14:32 7,005,264 mysqlimport.exe
2024/07/12 14:32 7,521,352 mysqlpump.exe
2024/07/12 14:32 7,544,912 mysqlrouter.exe
2024/07/12 14:32 6,314,080 mysqlrouter_keyring.exe
2024/07/12 14:32 6,285,408 mysqlrouter_passwd.exe
2024/07/12 14:32 6,269,544 mysqlrouter_plugin_info.exe
2024/07/12 14:32 7,003,728 mysqlshow.exe
2024/07/12 14:32 7,022,160 mysqlslap.exe
2024/07/12 14:32 6,302,304 mysql_config_editor.exe
2024/07/12 14:32 7,095,392 mysql_migrate_keyring.exe
2024/07/12 14:32 6,999,664 mysql_secure_installation.exe
2024/07/12 14:32 6,327,392 mysql_ssl_rsa_setup.exe
2024/07/12 14:32 6,234,208 mysql_tzinfo_to_sql.exe
2024/07/12 14:32 7,098,968 mysql_upgrade.exe
2024/07/12 14:32 6,287,968 my_print_defaults.exe
2024/07/12 14:32 7,180,872 perror.exe
2024/07/12 14:32 6,253,656 zlib_decompress.exe
下面是一些常用的程序简介,如果还想了解其他的程序可以到官网中查看
程序名 | 简介 |
mysqld | MySQL的守护进程即MySQL服务器,要使用MySQL服务器,mysqld必须正在运行状态 |
mysql | MySQL客户端程序,用于交互式输入SQL语句或以批处理模式从文件执行SQL的命令行工具。 |
mysqlcheck | 用于检查、修复、分析和优化表的表维护客户端 |
mysqldump | 将MySQL数据库转储到SQL、文本或XML文件中的客户端 |
mysqlimport | 将文本文件导入到表的客户端工具 |
mysqladmin | 执行管理操作的客户端,例如创建或删除数据库、重新加载授权表、将表刷新到磁盘以及重新打开日志文件。Mysqladmin还可以用于从服务器检索版本、进程和状态信息 |
mysqlshow | 显示数据库、表、列和索引信息的客户端 |
mysqldumpslow | 用于读取和汇总慢速查询日志内容的实用程序 |
mysqlbinlog | 从二进制日志中读取SQL语句的实用程序。mysqlbinlog文件中包含的已执行SQL语句的日志,可用于从崩溃中恢复数据 |
mysqlslap | 客户端负载工具,模拟多个客户端同时访问MySQL服务器,并报告每个阶段的使用时间二 |
二、mysqld--mysql服务器介绍
MySQL服务器,也被称为mysqld,是一个多线程程序,对数据目录进行访问管理,数据目录包含数据库和表。数据目录也是其他信息,如日志文件和状态文件的默认存储位置。
当MySQL服务器启动时,会侦听指定的端口、处理来自客户端程序的网络连接,并管理不同客户端对数据库的访问。
mysqld程序有许多选项可以在启动时指定。运行以下命令查看完整的选项列表:
mysqld --verbose --help
三、mysql - MySQL 命令行客户端
3.1 客户端介绍
MySQL是一个简单的SQL shell,可以输入命令和执行SQL语句,当执行SQL语句时,查询结果以ASCII表格式显示。
MySQL的基本使用非常简单,回顾一下连接数据库的方式,打开终端并输入以下命令:
# 连接MySQL服务器,⻓选项格式
mysql --user=user_name --password [db_name]
# 短选项格式
mysql -uuser_name -p [db_name]
# 输⼊密码
Enter password: your_password
3.2 mysql 客户端选项
指定选项的方式
指定选项的方式有三种,分别是
- 在mysql后面的命令行中列出选项
- 在mysql后面指定配置文件的路径,以便在程序启动时读取配置文件中的选项。
- 使用环境变量中的选项。
我们后面主要介绍第一种和第二种方式。接下来我们了解一下都有些什么选项
mysql 客户端命令常用选项
选项长格式 | 选项短格式 | 说明 |
--host | -h | --host=host_name , -hhost_name 连接到指定主机上的MySQL服务 |
--port | -P | --port=port_num , -Pport_num TCP/IP连接使用的端口号 |
--user | -u | --user=user_name , -uuser_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 , -Ddb_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 , -estatement 执行指定的SQL语句并退出 |
--version | -V | --version , -V 显示版本信息并退出 |
--help | -? | --help , -? 显示帮助信息并退出 |
ps:如果选项输入中包含空格,需要包含在" "中
在命令行中使用选项
在命令行要遵循以下规则:
- 选项应在程序名之后给出。
- 选项以单破折号“-”或双破折号“--”开头,“-”表示短格式,“--”表示长格式,例如:-?和--help都表示MySQL程序显示他的帮助消息。
mysql -?
mysql --help
- 选项名称区分大小写。-v和-V都是合法的,但含义不同,它们分别是--verbose和--version选项的相应缩写形式。
# 以下两个等价
mysqld --verbose --help
mysqld -v -?
# 以下两个等价
mysql --version
mysql -V
- 某些选项需要在后面指定一个值。例如,-h 127.0.0.1 或 --host=127.0.0.1 表示向客户端程序指定MySQL服务器主机。
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是等价的。但是对于密码选项的短格式,如果要指定密码,选项与值之间不能有空格,如下所示:
mysql -ptest # test表⽰密码,但没有指定要访问的数据库
mysql -p test # test 表⽰指定了访问的数据库,但没有指定密码
ps:在命令行中,第一个不带破折号 - 的值被解析为要访问的数据库名,所以--database选项一般可以省略。
- 在选项名称中,破折号“-”和下划线“_”在大多数情况下可以互换使用,但前导破折号不能转为下划线,例如:--skip-grant-tables和--skip_grant_tables是等价的。
- 对于采用数值的选项,该值可以带有后缀K、M或G以指示乘数1024、1024²或1024³,例如,以下命令告诉mysqladmin对服务器执行1024次ping,每次ping之间休眠3秒。
mysqladmin --count=1K --sleep=3 ping -uroot -p
- 在命令行中包含空格的选项值必须用引号引起来。例如,--execute(或-e)选项与mysql一起使用时,表示将一个或多个SQL语句发送给服务器执行并显示结果。
mysql -u root -p -e "SELECT VERSION();SELECT NOW();"
选项(配置)文件
大多数MySQL程序都可以从选项文件(配置文件)中读取启动选项。可以在选项文件中指定常用选项,这样就不必在每次运行程序时都在命令行中输入它们。大部分选项文件都是纯文本格式,可以使用任何文本编辑器创建。
使用方法
选项 --defaults-file 可以指定要使用的选项文件,客户端程序会读取并应用选项文件中的相关配置
# 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,<br>%WINDIR%\my.cnf | 全局 |
C:\my.ini,<br>C:\my.cnf | 全局 |
BASEDIR\my.ini,<br>BASEDIR\my.cnf | 全局 |
defaults-extra-file | 如果存在其他选项文件可以通过--defaults-extra-file选项指定 |
%APPDATA%\MySQL.mylogin.cnf | 登录路径选项(仅限客户端) |
DATADIR\mysqld-auto.cnf | 系统变量(仅限服务器) |
- %WINDIR% 表示 Windows 目录的位置,可以通过命令查看:
C:\Users\zyq>echo %WINDIR%
# 以下是结果
C:\Windows
- BASEDIR 表示 MySQL 的安装目录:
D:\Program Files\MySQL\MySQL Server 8.0
- %APPDATA% 表示应用程序数据的目录:
C:\Users\zyq>echo %APPDATA%
# 以下是结果
C:\Users\zyq\AppData\Roaming
- DATADIR 代表MySQL数据目录:
C:\ProgramData\MySQL\MySQL Server 8.0
使⽤ 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 数据目录
选项文件语法
运行MySQL程序时在命令行上指定的任何长选项都可以在选项文件中指定,要获取选项列表可以使用如下命令。
# 客⼾端程序
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 客户端程序。假设有一个 MySQL 的配置文件,其内容可能如下所示:
[mysqld] # 服务端配置 port = 3306 datadir = /var/lib/mysql socket = /var/lib/mysql/mysql.sock[mysql] # 客户端配置 auto-rehash = 1 default-character-set = utf8mb4
- opt_name 相当于命令行上的选项名。
- opt_name = value 选项名对应的值,可以使用转义序列 \b、\t、\n、\r、\ 和 \s 来表示退格符、制表符、换行符、回车符、反斜杠和空格字符。
- [client] MySQL 发行版中所有客户端程序都会读取并应用这个组下的选项(除了 mysqld),在这个组下可以指定适用于所有客户端程序的通用选项,例如配置用户名和密码(但要确保只有自己才可以访问这个文件以防止密码泄漏)。
# 在当前⽤⼾的home⽬录下创建.my.cnf,并在[client]写⼊公共配置 # 这⾥主要设置⽤了主机、端⼝、⽤⼾名、密码 root@guangchen-vm:~# vim .my.cnf [client] host=127.0.0.1 port=3306 user=root password=123456 # 直接运⾏mysql,不⽤输⼊⽤⼾名密码可以直接成功登录 root@zyq-vm:~# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.34 MySQL Community Server - GPL Copyright (c) 2000, 2023, 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>
- 可以通过 [客户端程序名] 的形式为不同的客户端程序指定选项,例如 [mysql],当运行 mysql 程序时会读取并应用该组下的配置,如果选项名与 [client] 重复,[client] 中的选项将会被覆盖。
root@zyq:~# cat .my.cnf
[client]
host=127.0.0.1
port=3306
user=root
password=123456# 设置为必须输⼊密码
[mysql]
passwordroot@guangchen-vm:~# mysql
Enter password: # 强制要求登录时输⼊密码 Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.34 MySQL Community Server - GPL
Copyright (c) 2000, 2023, 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>
- 为特定 MySQL 版本设置选项可以使用 [mysqld-5.7]、[mysqld-8.0] 的组名。
- 在选项文件中使用 ! included 指令来包含其他选项文件,例如:
!include /home/mydir/myopt.cnf
- 在选项文件中使用 ! includedir 指令来搜索指定目录中的选项文件,例如:
!includedir /home/mydir
,但不保证目录中选项文件的读取顺序。
- ! includedir 在 Unix 和 Linux 操作系统中会搜索指定目录下任何以 .cnf 为后缀的文件。在 Windows 中,会搜索指定目录下任何以 .ini 或 .cnf 为后缀的文件。
- 只会读取包含文件中当前客户端的组配置,例如当前运行的是 mysql 程序,那么只会读取
[mysql]
组中的选项配置。
- 在 Windows 中请确保在配置文件的最后一行加一个换行符,否则该行将被忽略
注意:
- 选项名称和值中的前导和尾随空格会自动删除。
- 在 Windows 系统中设置路径应该使用转义字符,所以建议不管在什么系统下都使用第二种方式
basedir="C:\\Program Files\\MySQL\\MySQL Server 8.0"
# 或
basedir="C:/Program Files/MySQL/MySQL Server 8.0"
使用举例:为所有客户端设置字符编码集
在Linux下编辑全局配置文件默认位置 /etc/mysql/my.cnf ,初始内容如下:
root@guangchen-vm:~# vim /etc/mysql/my.cnf
# Copyright (c) 2015, 2023, Oracle and/or its affiliates.
#
# ... 省略
#
# The MySQL Server configuration file.
#
# 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/
# 以下区域可以根据需要进⾏配置
在已有内容下方输入相应的配置,我们要为客户端设置全局的编码格式为utf8mb4,那么在 [client] 节点下指定相应的选项即可
[client] # 所有客⼾端程序者会读取这个节点下的配置信息
default-character-set=utf8mb4 # 指定编码格式为utf8mb4
3.3 mysql客户端命令
- 使用 mysql客户端程序连接到数据库服务器之后,可以发送SQL语句到服务器执行,并以 ";"(分 号)、\g 或 \G结束
1. `;` 与 `\g` 结束表示以表格形式显示结果。
2. `\G` 结束表示以行形式显示结果(当我们查询出内容发现很乱不好看可以以行打印)
3. 如果当前已经输入了一部分 SQL 语句想重新输入可以输入 `Control+C` 中断当前输入。
- 在当前模式下,mysql还有⼀组自己的命令,可以输入 help or \h 查看命令列表
mysql> help
For information about MySQL products and services, visit:http://www.mysql.com/
For developer information, including the MySQL Reference Manual, visit:http://dev.mysql.com/
To buy MySQL Enterprise support, training, or other products, visit:https://shop.mysql.com/
List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
? (\?) Synonym for `help'.
clear (\c) Clear the current input statement.
connect (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit (\e) Edit command with $EDITOR.
ego (\G) Send command to mysql server, display result vertically.
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to mysql server.
help (\h) Display this help.
nopager (\n) Disable pager, print to stdout.
notee (\t) Don't write into outfile.
pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (\#) Rebuild completion hash.
source (\.) Execute an SQL script file. Takes a file name as an argument.
status (\s) Get status information from the server.
system (\!) Execute a system shell command.
tee (\T) Set outfile [to_outfile]. Append everything into given outfile.
use (\u) Use another database. Takes database name as argument.
charset (\C) Switch to another charset. Might be needed for processing
binlog with multi-byte charsets.
warnings (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.
query_attributes Sets string parameters (name1 value1 name2 value2 ...) for
the next query to pick up.
ssl_session_data_print Serializes the current SSL session data to stdout or
file
For server side help, type 'help contents'
- 使用 help contents命令可以查看关于MySQL数据库使用的具体帮助,包括用户管理、SQL语法、 数据类型、组件等相关内容列表
mysql> help contents
You asked for help about help category: "Contents"
For more information, type 'help <item>', where <item> is one of the following
categories:Account ManagementAdministrationComponentsCompound StatementsContentsData DefinitionData ManipulationData TypesFunctionsGeographic FeaturesHelp MetadataLanguage StructureLoadable FunctionsPluginsPrepared StatementsReplication StatementsStorage EnginesTable MaintenanceTransactionsUtility
- 通过 help contents中的具体条目查看介绍,例如: help Data Types
mysql> help Data Types # 这⾥说明要查看关于数据类型的帮助信息
You asked for help about help category: "Data Types"
For more information, type 'help <item>', where <item> is one of the following
topics:AUTO_INCREMENTBIGINTBINARYBITBLOBBLOB DATA TYPEBOOLEANCHARCHAR BYTEDATEDATETIMEDECDECIMALDOUBLEDOUBLE PRECISIONENUMFLOATINTINTEGERLONGBLOBLONGTEXTMEDIUMBLOBMEDIUMINTMEDIUMTEXTSET DATA TYPESMALLINTTEXTTIMETIMESTAMPTINYBLOBTINYINTTINYTEXTVARBINARYVARCHARYEAR DATA TYPE
- 继续输入help 具体的条目查看关于此条目的详细说明,例如:help BIT
mysql> help BIT # 以下显⽰关于BIT数据类形的具体描述
Name: 'BIT'
Description:
BIT[(M)]
A bit-value type. M indicates the number of bits per value, from 1 to
64. The default is 1 if M is omitted.
URL: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html