简介
MySQL Shell是MySQL的高级客户端和代码编辑器。它除了基本的SQL功能外,还提供一套使用Javascript和Python的API去管理MySQL。能使用它提供的XDevAPI操作MySQL 8.0提供的关系型数据库和文档数据库,还可以使用AdminAPI管理InnoDB集群。
特点
- 支持使用Javascript、Python、SQL三种方式操作数据库
- 支持交互式代码执行
- 批处理代码执行
- AdminAPI能管理MySQL实例、InnoDB集群、Innodb副本集、MySQL Cluster、MySQL Router
- XDevAPI能管理RDS和NOSQL
- 输出格式化
- 日志和调试
- 全局Session
MySQL Shell 命令
| 命令 | 别名 | 描述 |
|---|---|---|
| \help | \h or ? | 打印帮助或查询在线帮助 |
| \quit | \q or \exit | 退出 |
| \ | 在SQL模式,开启多行命令模式。 | |
| \status | \s | 显示当前mysql shell状态 |
| \js | 切换到Javascript模式 | |
| \py | 切换到Python模式 | |
| \sql | 切换到SQL模式 | |
| \connect | \c | 连接MySQL服务器 |
| \reconnect | 重连MySQL服务器 | |
| \disconnect | 断开全局Session | |
| \use | \u | 指定要使用的模式 |
| \source | . or source | 执行脚本文件使用激活语言 |
| \warnings | \W | 显示警告 |
| \nowarnings | \w | 不显示警告 |
| \history | 显示编辑过的命令 | |
| \rehash | 手动更新缓存自动完成的名字 | |
| \option | 查询或更改MySQL Shell配置项 | |
| \show | 使用提供的选项和参数运行执行的报告 | |
| \watch | 使用提供的选项和参数运行指定的报告,并定期刷新结果。 | |
| \edit | \e | 在默认系统中打开一个命令,然后在MySQL Shell中显示它 |
| \pager | \P | 配置MySQL Shell显示文本 |
| \nopaper | 禁用MySQL Shell显示 | |
| \system | ! | 运行指定操作系统命令在MySQL Shell中显示 |
- AdminAPI - 提供全局对象dba来管理InnoDB集群和副本集。
- X DevAPI - 提供mysqlx模块管理文档存储
- ShellAPI - 提供全局对象shell和util,以及mysql模块来执行SQL语句
connect、reconnect、disconnect
使用\connect命令连接MySQL服务器,例如:
\connect root@localhost:3306
使用 --mysqlx 选项通过X Protocol连接MySQL服务器,例如:
\connect --mysqlx root@localhost:3306
使用 --mysql 选项通过传统方式连接MySQL服务器,例如:
\connect --mysql root@localhost:3306
Status
使用 \status 命令查询当前全局连接的信息,包括服务器连接、字符集、运行时长等。
Source
\source 在MySQL Shell被用来执行脚本文件,例如:
\source /tmp/data.sql
在执行脚本文件前需检查当前模式是否和脚本语言匹配。
Use
使用 \use 命令切换数据库,例如:
\use schema_name
History
使用 \history 管理在MySQL Shell中使用的命令,例如:
\history save保存历史命令\history delete删除历史命令\history delete firstnumber-lastnumber删除多少行到多少行的命令\history delete number-删除从多少行开始后的命令\history delete -number删除从头到多少行的命令\history清理历史命令
Option
\option 命令能使你查询和更改MySQL Shell配置项。
Pager
配置MySQL Shell使用扩展导航读取更长输出,如在线帮助和SQL查询结果。
Show Watch
\show 命令运行执行的报告,这个可以使MySQL Shell的报告或用户定义报告。
\watch 命令显示指定的报告。
Edit
\edit 命令打开系统默认的编辑器
System
\system 命令在操作系统上运行。
全局对象
在启动MySQL Shell可以使用内置的全局对象,分别使:
- dba 管理MySQL实例、集群、副本集
- mysql 管理传统SQL模式
- mysqlx 管理X协议支持RDS和NoSQL
- shell 提供访问各种MySQL Shell函数
- shell.option 管理MySQL Shell配置
- shell.reports 管理用户定义的MySQL Shell配置
- util 工具包
- cluster InnoDB
- rs 副本集
- db 可用在全球建立了会话使用X协议连接指定一个默认的数据库和模式的代表。
启动MySQL Shell
使用 mysqlsh 启动MySQL Shell,例如:
> mysqlsh
通过X Protocol连接MySQL服务器
> mysqlsh --mysqlx -u root -h localhost -P 33060
使用传统模式连接MySQL服务器
> mysqlsh --uri mysql://user@localhost:3306
> mysqlsh mysql://user@localhost:3306
> mysqlsh --mysql --uri user@localhost:3306
启动MySQL Shell后连接MySQL服务器
mysql-js> \connect mysqlx://user@localhost:33060
mysql-js> \connect --mysqlx user@localhost:33060
mysql-js> shell.connect('mysqlx://user@localhost:33060')
mysql-js> shell.connect( {scheme:'mysqlx', user:'*user*', host:'localhost', port:33060} )
在Javascript和Python模式中使用脚本对象
全局对象
在JS和PY模式下可以使用mysqlx和mysql对象。
使用getSession函数可以获取一个session对象,例如:
mysql-js> var s1 = mysqlx.getSession('user@localhost:33060', 'password')
mysql-js> var s2 = mysql.getClassicSession('user@localhost:33060', 'password')
mysql-js> var s3 = shell.open_session('mysqlx://user@localhost:33060?compression=required', 'password')