目錄
一、程序介紹
二、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、10242或10243,例如,以下命令告訴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