MySQL进阶学习与初阶复习第二天

目录

[一.mysql - MySQL 命令⾏客⼾端](#一.mysql - MySQL 命令⾏客⼾端)

[1.mysql 客⼾端简介](#1.mysql 客⼾端简介)

[2.mysql 客⼾端选项](#2.mysql 客⼾端选项)

3.选项(配置)⽂件

[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:

  1. 选项名称和值中的前导和尾随空格会⾃动删除
  2. 在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,不⽤输⼊⽤⼾名密码可以直接成功登录 ![](https://i-blog.csdnimg.cn/direct/ef1b6715cfa64c519f1574706346e262.png) 可以通过 \[客⼾端程序名\] 的形式为不同的客⼾端程序指定选项,例如 \[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 ``` ![](https://i-blog.csdnimg.cn/direct/db3ac7b4636746e9b8fa26df00b20b92.png) 为特定 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 查看命令列表 ![](https://i-blog.csdnimg.cn/direct/ba9640ef616e46f8ac03ce641c975503.png) * 使⽤help contents命令可以查看关于MySQL数据库使⽤的具体帮助,包括⽤⼾管理、SQL语法、数据类型、组件等相关内容列表 ![](https://i-blog.csdnimg.cn/direct/8f31dc9c232d4bf0ab178f4871db887e.png) * 通过help contents中的具体条⽬查看介绍,例如: help Data Types ![](https://i-blog.csdnimg.cn/direct/714dfcda23364c70ad47daf5952300b4.png) * 继续输⼊help 具体的条⽬ 查看关于此条⽬的详细说明,例如:help BIT ![](https://i-blog.csdnimg.cn/direct/5b79597c6712476f8527fe6244323626.png)

相关推荐
不是起点的终点2 小时前
【实战】Python 一键生成数据库说明文档(对接阿里云百炼 AI,输出 Word 格式)
数据库·python·阿里云
2301_813599554 小时前
Go语言怎么做秒杀系统_Go语言秒杀系统实战教程【实用】
jvm·数据库·python
NCIN EXPE9 小时前
redis 使用
数据库·redis·缓存
MongoDB 数据平台9 小时前
为编码代理引入 MongoDB 代理技能和插件
数据库·mongodb
极客on之路9 小时前
mysql explain type 各个字段解释
数据库·mysql
代码雕刻家9 小时前
MySQL与SQL Server的基本指令
数据库·mysql·sqlserver
lThE ANDE9 小时前
开启mysql的binlog日志
数据库·mysql
yejqvow129 小时前
CSS如何控制placeholder文字的颜色_使用--placeholder伪元素
jvm·数据库·python
handler019 小时前
从源码到二进制:深度拆解 Linux 下 C 程序的编译与链接全流程
linux·c语言·开发语言·c++·笔记·学习
电子云与长程纠缠9 小时前
UE5 两种方式解决Decal Actor贴花拉伸问题
学习·ue5·游戏引擎