MySQL Shell教程

文章目录

一、简介

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')
相关推荐
鲨鱼辣椒喔1 分钟前
# 团队密码管理工具怎么选?对比 Bitwarden、Vault、Excel 和 OpsTiny
运维·数据库·安全·密码学·个人开发
Elastic 中国社区官方博客9 分钟前
Elasticsearch Reindex 现已支持跨节点自动迁移:无需人工干预,不会丢失进度
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
努力努力再努力wz9 分钟前
【C++高阶数据结构系列】:跳表 SkipList 详解:多层索引、随机晋升与C++ 完整实现(附跳表实现的源码)
开发语言·数据结构·数据库·c++·redis·缓存·skiplist
学代码的真由酱9 分钟前
MySQL数据库进阶-Java
数据库·mysql
暗夜猎手-大魔王18 分钟前
转载--Hermes Agent 09 | 技能安全:静态扫描 + 信任级别策略如何防止“技能投毒“
网络·数据库·安全
Surpass-HC21 分钟前
gsoap搭建网络像机onvif服务器
linux·服务器·数据库
smzyydwwb21 分钟前
BW数据库链接信息包DEBUG
数据库·sap·bw
muddjsv31 分钟前
HBase与Hadoop:基于什么开发?深度剖析与架构图
数据库·hadoop·hbase
muddjsv31 分钟前
HBase 与 Hadoop 安装与上手使用全指导
数据库·hadoop·hbase
学计算机的计算基34 分钟前
MySQL 锁体系全解:从 MDL 到间隙锁,一次讲透
java·数据库·笔记·python·mysql