文章目录
- 一、简介
- 二、特点
- [三、 MySQL Shell 命令](#三、 MySQL Shell 命令)
- 四、全局对象
- [五、启动MySQL Shell](#五、启动MySQL Shell)
- 六、在Javascript和Python模式中使用脚本对象
一、简介
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语句
1、connect、reconnect、disconnect
使用\connect命令连接MySQL服务器,例如:
perl
\connect root@localhost:3306
使用 --mysqlx 选项通过X Protocol连接MySQL服务器,例如:
perl
\connect --mysqlx root@localhost:3306
使用 --mysql 选项通过传统方式连接MySQL服务器,例如:
perl
\connect --mysql root@localhost:3306
2、Status
使用 \status 命令查询当前全局连接的信息,包括服务器连接、字符集、运行时长等。
3、Source
\source 在MySQL Shell被用来执行脚本文件,例如:
perl
\source /tmp/data.sql
在执行脚本文件前需检查当前模式是否和脚本语言匹配。
4、Use
使用 \use 命令切换数据库,例如:
perl
\use schema_name
5、History
使用 \history 管理在MySQL Shell中使用的命令,例如:
-
\history save 保存历史命令
-
\history delete 删除历史命令
-
\history delete firstnumber-lastnumber 删除多少行到多少行的命令
-
\history delete number- 删除从多少行开始后的命令
-
\history delete -number 删除从头到多少行的命令
-
\history 清理历史命令
6、Option
\option 命令能使你查询和更改MySQL Shell配置项。
7、Pager
配置MySQL Shell使用扩展导航读取更长输出,如在线帮助和SQL查询结果。
8、Show Watch
\show 命令运行执行的报告,这个可以使MySQL Shell的报告或用户定义报告。\watch 命令显示指定的报告。
9、Edit
\edit 命令打开系统默认的编辑器
10、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,例如:
bash
> mysqlsh
通过X Protocol连接MySQL服务器
bash
> mysqlsh --mysqlx -u root -h localhost -P 33060
使用传统模式连接MySQL服务器
perl
> mysqlsh --uri mysql://user@localhost:3306
> mysqlsh mysql://user@localhost:3306
> mysqlsh --mysql --uri user@localhost:3306
启动MySQL Shell后连接MySQL服务器
perl
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对象,例如:
perl
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')