MySQL Shell是MySQL的高级命令行客户端和代码编辑器。除了SQL, MySQL Shell还提供JavaScript和Python的脚本功能。有关使用MySQL Shell的信息,请参见MySQL Shell 8.0.当MySQL Shell通过X协议连接到MySQL服务器时,X DevAPI可以用来处理关系数据和文档数据,参见使用MySQL作为文档存储.MySQL Shell包含AdminAPI,使您能够使用InnoDB Cluster, InnoDB ClusterSet和InnoDB replicset部署;看到第六章,MySQL AdminAPI.
这里描述的许多选项都与MySQL Shell和MySQL Server实例之间的连接有关。看到第4.3节,MySQL Shell连接更多信息。
mysqlsh支持以下命令行选项。
表A.1 mysqlsh选项
选项名称 | 描述 | 介绍了 |
---|---|---|
-- | 开始API命令行集成 | |
- - - auth方法 | 要使用的身份验证方法 | |
——集群 | 连接到InnoDB集群 | 8.0.4 |
——column-type-info | 打印结果集中列的元数据 | 8.0.14 |
——压缩 | 压缩客户端和服务器之间发送的所有信息 | 8.0.14 |
——connect-timeout | 全局会话的连接超时 | 8.0.13 |
——credential-store-helper | 密码的Secret Store助手 | 8.0.12 |
——数据库 | 要使用的模式(——schema的别名) | |
——dba | 在连接MySQL 5.7服务器时启用X协议 | |
——dba-log-sql | 记录AdminAPI操作执行的SQL语句 | 8.0.18 |
——dbpassword | 连接到服务器时使用的密码 | |
——dbus | 连接到服务器时使用的MySQL用户名 | |
——执行 | 执行命令并退出 | |
——文件 | 要以批处理模式处理的文件 | |
——力 | 即使出现错误,也要继续使用SQL和批处理模式 | |
——get-server-public-key | 从服务器请求RSA公钥 | |
——帮助 | 显示帮助信息并退出 | |
——histignore | 未添加到历史记录的字符串 | 8.0.3 |
——主机 | MySQL服务器实例所在的主机 | |
——进口 | 从文件或标准输入导入JSON文档 | 8.0.13 |
——互动 | 模拟批处理模式中的交互模式 | |
——js,——javascript | 以JavaScript模式启动 | |
——json | 打印输出JSON格式 | |
——日志文件 | 此实例的日志文件位置 | 8.0.27 |
——进行日志级别 | 指定日志记录级别 | |
马 | 自动检测会话的传输协议 | 8.0.3 |
——mysql,mc | 使用经典MySQL协议创建会话 | 8.0.3 |
——mysql-plugin-dir | 安装客户端插件的目录 | 8.0.27 |
——mysqlx,mx | 使用X协议创建会话 | 8.0.3 |
——名称缓存 | 启用基于活动默认模式的表名自动加载 | 8.0.4 |
——no-name-cache | 禁用自动完成 | 8.0.4 |
——没密码 | 此连接没有提供密码 | |
——no-wizard,——西北 | 禁用交互式向导 | |
——寻呼机 | 用于显示输出的外部寻呼机工具 | 8.0.13 |
——密码 | 连接到服务器时使用的密码(——dbpassword的别名) | |
——passwords-from-stdin | 从stdin读取密码 | |
——港口 | TCP/IP连接端口号 | |
——py,——python | 以Python模式启动 | |
——低调 | 开始时不要打印介绍性信息 | |
——recreate-schema | 删除并重新创建模式 | |
——redirect-primary | 确保连接到InnoDB集群的主节点 | 8.0.4 |
——redirect-secondary | 确保连接到InnoDB集群的备用服务器 | |
——result-format | 设置此会话的输出格式 | 8.0.14 |
——save-passwords | 密码如何存储在秘密存储中 | 8.0.12 |
——模式 | 要使用的模式 | |
——server-public-key-path | 包含RSA公钥文件的路径名称 | |
——显示警告 | 在每个语句之后显示警告(在SQL模式下) | |
——套接字 | 使用Unix套接字文件或Windows命名管道(仅适用于经典MySQL协议) | |
——sql | 启动SQL模式,自动检测协议用于连接 | |
——sqlc | 使用经典的MySQL协议连接以SQL模式启动 | |
——sqlx | 使用X协议连接以SQL模式启动 | 8.0.3 |
——ssl-ca | 包含受信任的SSL证书颁发机构列表的文件 | |
——ssl-capath | 包含受信任的SSL证书颁发机构证书文件的目录 | |
——ssl-cert | 包含X.509证书的文件 | |
——ssl cipher | 要使用的SSL密码的名称 | |
——ssl-crl | 包含证书撤销列表的文件 | |
——ssl-crlpath | 包含证书吊销列表文件的目录 | |
——ssl密钥 | 包含X.509密钥的文件 | |
——ssl-mode | 到服务器的连接所需的安全状态 | |
——syslog | 将交互式SQL语句记录到系统日志记录工具 | 8.0.24 |
——选项卡 | 以制表符分隔格式显示输出 | |
——表 | 以表格格式显示输出 | |
——tls版本 | 允许的TLS加密连接协议 | |
——uri | URI格式的会话信息 | |
——用户 | MySQL连接到服务器时使用的用户名(——dbuser的别名) | |
——详细 | 激活对控制台的详细输出 | 8.0.17 |
——版本 | 显示版本信息并退出 | |
——垂直 | 垂直显示所有SQL结果 |
——帮助
,-?
显示帮助消息并退出。
标记mysqlsh选项列表的结束和MySQL Shell的API命令行集成的命令及其参数的开始。你可以使用下面的语法从命令行执行MySQL Shell全局对象的方法:
mysqlsh [选项)——对象方法[参数]
看到第5.8节,“API命令行集成”更多信息。
为帐户使用的身份验证方法。取决于帐户密码使用的身份验证插件。对于使用经典MySQL协议的MySQL Shell连接,请指定认证插件的名称,例如
caching_sha2_password
.对于使用X协议的MySQL Shell连接,指定以下选项之一:- 汽车
-
让库选择身份验证方法。
- 回退
-
让库选择认证方法,但不要使用与MySQL 5.7不兼容的任何认证方法。
- FROM_CAPABILITIES
-
让库使用服务器实例声明的功能来选择身份验证方法。
- MYSQL41
-
请使用MySQL 4.1及以上版本支持的challenge-response认证协议,该协议不发送明文密码。该选项与使用
mysql_native_password
身份验证插件。 - 平原
-
发送明文密码进行认证。仅在加密连接中使用此选项。类的帐户可使用该选项通过缓存的凭据进行身份验证
caching_sha2_password
认证插件,只要有一个SSL连接。看到使用X插件与缓存SHA-2认证插件. - SHA256_MEMORY
-
使用存储在内存中的散列密码进行身份验证。类的帐户可使用该选项通过缓存的凭据进行身份验证
caching_sha2_password
认证插件,其中有一个非ssl连接。看到使用X插件与缓存SHA-2认证插件.
对于使用经典MySQL协议的MySQL Shell连接,请指定用户帐户使用的身份验证插件的名称,例如
caching_sha2_password
(这是MySQL 8.0中创建的用户帐户的默认值)。MySQL Shell使用MySQL客户端库对这些连接进行客户端身份验证。以下认证方式需要额外配置:- clear_text_password
-
的
mysql_clear_password
简单的LDAP身份验证需要客户端插件。它内置在MySQL客户端库中,但出于安全考虑,默认情况下没有启用它。从MySQL Shell 8.0.27中,MySQL Shell启用并使用插件——auth方法= clear_text_password
连接选项。这种身份验证类型只适用于使用SSL或套接字的安全连接,因此必须在使用安全连接之前配置安全连接。注意,在选项中ssl-mode =首选
,不保证SSL连接,因此具有此选项集的连接不被认为是SSL连接。有关更多信息,请参见第4.3.3节,“使用加密连接”. - authentication_ldap_sasl_client
-
的
authentication_ldap_sasl_client
客户端插件用于基于sasl的LDAP认证,包括GSSAPI/Kerberos认证。它不是内建在MySQL客户端库中,而是在MySQL Server包中提供的。要加载它,必须使用——mysql-plugin-dir
选项(从MySQL Shell 8.0.27中可用)来指定MySQL Server包中插件的路径。 - authentication_kerberos_client
-
的
authentication_kerberos_client
客户端插件用于Kerberos身份验证。它不是内建在MySQL客户端库中,而是在MySQL Server包中提供的。要加载它,必须使用——mysql-plugin-dir
选项(从MySQL Shell 8.0.27中可用)来指定MySQL Server包中插件的路径。
MySQL 8.0.27支持用于Kerberos身份验证的缓存票据授予票据(tgt)
- - - auth方法
选项用于指定authentication_ldap_sasl_client
或authentication_kerberos_client
插件和——mysql-plugin-dir
选项用于提供到插件的路径。要使用缓存的tgt,不要在连接选项中指定用户和密码。当您指定其中一个插件而不指定用户和密码时,MySQL Shell不提供系统用户名,不提示输入密码,也不尝试使用Secret Store助手检索或存储凭据。有关更多信息,请参见第4.3.4节“使用LDAP和Kerberos身份验证”.
确保目标服务器是一个InnoDB集群的一部分,如果是,设置
集群
集群对象的全局变量。在SQL模式下,在打印查询的返回结果集之前,打印结果集中每个列的元数据,例如列类型和排序规则。
返回的列类型与MySQL Shell (
类型
),以及原始数据库使用的类型(DBType
).对于使用经典MySQL协议的MySQL Shell连接,DBType
为协议返回值,对于X协议连接,DBType
是从现有信息中推断出来的。列长(长度
)以字节为单位返回。——压缩(={|喜欢|需要禁用})
,- c[{|喜欢|需要禁用}]
控制使用此连接在客户机和服务器之间发送的信息的压缩。在MySQL Shell 8.0.14到8.0.19中,该选项仅用于经典的MySQL协议连接,而不使用该选项
要求
,首选
,禁用
.在这些版本中,当您指定时——压缩
,如果可能,压缩被激活。从MySQL Shell 8.0.20中,它也可用于X协议连接,您可以选择指定要求
,首选
,或禁用
.当——压缩
从MySQL Shell 8.0.20指定,意思是——压缩=要求
.看到第4.3.5节,“使用压缩连接”有关在所有版本中使用MySQL Shell压缩控件的信息。配置MySQL Shell建立通过命令行参数指定的全局会话所需的等待时间(以毫秒为单位)。
将用于存储和检索密码的秘密存储助手。看到第4.4节,“可插入密码存储”.
——数据库=
,的名字
- d
的名字
要使用的默认模式。这是一个别名
——模式
.在连接MySQL 5.7服务器时启用X Plugin,以便在后续连接中使用X协议连接。需要使用经典MySQL协议连接。与MySQL 8.0服务器无关,它默认启用了X Plugin。
记录AdminAPI操作执行的SQL语句(不包括沙盒操作)。默认情况下,这类语句不会写入MySQL Shell应用程序日志文件,也不会作为详细输出发送到控制台,即使
——进行日志级别
而且——详细
设置选项。该选项的取值范围为0 ~ 2的整数。0不记录或显示这类语句,如果不指定该选项,这是默认行为。1记录AdminAPI操作执行的SQL语句,除选择
语句和显示
语句(如果您在没有值的命令行上指定该选项,则这是默认设置)。2完整记录AdminAPI常规操作执行的SQL语句,包括选择
而且显示
语句。看到第十二章,MySQL Shell日志和调试更多信息。在MySQL Shell 8.0.13版本已移除。使用
——密码(=
代替。密码
]在MySQL Shell 8.0.13版本已移除。使用
——用户=
代替。user_name
——执行=
,命令
- e
命令
使用当前激活的语言执行命令并退出。选项互斥
——文件=
选择。file_name
——文件=
,file_name
- f
file_name
指定要以批处理模式处理的文件。在此之后指定的任何选项都用作处理后文件的参数。
即使出现错误,也要继续使用SQL和Batch模式进行处理。
指定没有添加到MySQL Shell历史记录的字符串。字符串用冒号分隔。匹配不区分大小写,通配符*和?可以使用。默认被忽略的字符串被指定为”
* *确定*:*密码
”.看到第5.5节,“代码历史”.——主机=
,host_name
- h
host_name
连接到给定主机上的MySQL服务器。在Windows上,如果指定的话
——主机=。
或- h。
(以主机名作为句点),MySQL Shell使用默认的命名管道进行连接MySQL
方法指定的另一种命名管道——套接字
选择。Shell等效的MySQL
——get-server-public-key
.如果
——server-public-key-path =
,并指定有效的公钥文件,它优先于file_name
——get-server-public-key
.重要的只支持经典的MySQL协议连接。
看到缓存SHA-2可插入认证.
使用JSON导入实用程序将JSON文档从文件或标准输入导入到MySQL Server集合或关系表。有关说明,请参见第11.2节,“JSON导入实用程序”.
——互动(=完整)
,-我
在批处理模式中模拟交互模式。
——js
,——javascript
以JavaScript模式启动。
控制这个会话的MySQL Shell输出的JSON包装。该选项用于将MySQL Shell与其他程序连接起来,例如作为测试的一部分。要更改查询结果输出以使用JSON格式,请参见
——result-format
.当
——json
选项没有值或值为漂亮的
,输出生成为打印精美的JSON。的值生
,输出以原始JSON格式生成。在这些情况下,——result-format
选项及其别名的值resultFormat
MySQL Shell配置选项被忽略。的值从
类指定的格式正常输出结果集——result-format
选项或resultFormat
配置选项。更改MySQL Shell应用程序日志文件的位置
mysqlsh.log
MySQL Shell实例。应用程序日志文件的默认位置是用户配置路径,默认为% APPDATA % \ MySQL \ mysqlsh \
在Windows或~ / .mysqlsh /
在Unix。您可以通过定义环境变量来覆盖所有MySQL Shell实例的用户配置路径MYSQLSH_USER_CONFIG_HOME
.的——日志文件
选项适用于单独的MySQL Shell实例,这意味着不同的实例可以写入不同的位置。更改MySQL Shell应用程序日志文件的日志级别
mysqlsh.log
,或禁用对文件的日志记录。该选项需要一个值,可以是1到8之间的整数,也可以是其中之一没有一个
,内部
,错误
,警告
,信息
,调试
,debug2
,或debug3
.指定1或没有一个
禁止记录到应用程序日志文件。第五级(信息
)是默认值,如果您不指定此选项。看到第十二章,MySQL Shell日志和调试.在MySQL Shell 8.0.13版本已移除。自动尝试使用X协议创建会话连接,如果X协议不可用,则退回到经典的MySQL协议。
——mysql
,- - - mc
将启动时创建的全局会话设置为使用经典的MySQL协议连接。的
- - - mc
选项用两个连字符替换先前的单个连字符mc
MySQL Shell 8.0.13选项。控件的值来设置到客户端身份验证插件的非持久路径
shell.options.mysqlPluginDir
设置。客户端插件是在MySQL Server包中提供的,可以相对于MySQL基目录(的值basedir
系统变量)。例如:C:\program files\mysql\mysql Server 8.0\lib\plugin
在Windows主机类型上/usr/local/mysql/lib/plugin
在Linux主机类型上
有关随服务器附带的客户端身份验证插件的列表,请参见可用的身份验证插件.
——mysqlx
,- - - mx
将在启动时创建的全局会话设置为使用X协议连接。的
- - - mx
选项用两个连字符替换先前的单个连字符mx
MySQL Shell 8.0.13选项。启用基于活动默认模式的表名自动加载。
——no-name-cache
,——一个
禁用基于活动默认模式和DevAPI的自动完成的表名加载
db
对象。使用\重复
手动重新加载名称信息。在连接到服务器时,如果用户使用无密码帐户(这是不安全的,不建议使用),或者使用套接字对等凭证身份验证(对于Unix套接字连接),则必须使用
——没密码
显式指定不提供密码,并且不需要密码提示。——no-wizard
,- nw
禁用创建连接等操作提供的交互向导,
dba.configureInstance ()
,
以此类推。当您希望编写MySQL Shell脚本而不显示交互式提示时,请使用此选项。有关更多信息,请参见第5.6节,“批处理代码执行”而且第5.8节,“API命令行集成”.集群
.rebootClusterFromCompleteOutage ()MySQL Shell使用的外部分页工具,用于显示以SQL模式执行的语句的文本输出和其他选定的命令(如在线帮助)。控件指定的分页器
寻呼机
使用环境变量。看到第4.6节“使用传呼机”.从标准输入读取密码,而不是从终端读取。此选项不影响任何其他密码行为,例如密码提示。
——密码(=
,密码
]- p
密码
连接到服务器时使用的密码。连接MySQL Shell所允许的最大密码长度为128个字符。
——密码=
(密码
- p
),值提供用于连接的密码。用长格式密码
——密码=
,您必须使用等号,而不是在选项及其值之间使用空格。用简写形式- p
,选项和值之间不能有空格。如果在这两种情况下都使用了空格,则该值不会被解释为密码,而可能被解释为另一个连接参数。在命令行上指定密码应该被认为是不安全的。看到密码安全终端用户指南.您可以使用选项文件来避免在命令行上给出密码。
——密码
没有值也没有等号,或者- p
如果没有值,则请求密码提示。——密码=
与空值具有相同的效果——没密码
,它指定用户不需要密码进行连接。在连接到服务器时,如果用户使用无密码帐户(这是不安全的,不建议使用),或者使用套接字对等凭据身份验证(对于Unix套接字连接),则必须使用以下方法之一显式指定不提供密码,并且不需要密码提示。
——港口=
,port_num
- p
port_num
用于连接的TCP/IP端口号。默认为33060端口。
——py
,——python
以Python模式启动。
在MySQL Shell的Python模式下以脚本的形式执行指定的Python模块。
——宾
与Python的工作方式相同- m
命令行选项。这个选项在MySQL Shell 8.0.22中可用。开始时不要打印介绍性信息。MySQL Shell通常打印有关产品的信息、有关会话的信息(例如默认模式和连接ID)、警告消息以及启动和连接期间返回的任何错误。当你指定
——低调
如果没有值或值为1,则不打印MySQL Shell产品的信息,但打印会话信息、警告和错误。如果值为2,则只打印错误。删除并重新创建连接选项中指定的模式,可以作为类似uri的连接字符串的一部分,也可以使用
——模式
,——数据库
,或- d
选择。如果模式存在,则删除该模式。确保目标服务器是一个InnoDB集群或InnoDB副本集的一部分,如果它不是主服务器,就找到主服务器并连接到它。使用此选项时,如果下列任何一种情况为真,MySQL Shell将退出并报错:
没有指定实例
在InnoDB集群中,组复制未激活
InnoDB集群元数据不存在
没有法定人数
确保目标服务器属于一个InnoDB副本集,如果是,则填充
rs
全局变量和InnoDB副本集。然后,你可以使用rs
全局变量,例如通过发布rs.status ()
.确保目标服务器是单主InnoDB集群或InnoDB副本集的一部分,如果它不是辅助服务器,则查找辅助服务器并连接到它。使用此选项时,如果下列任何一种情况为真,MySQL Shell将退出并报错:
在InnoDB集群中,组复制未激活
InnoDB集群元数据不存在
没有法定人数
集群不是单主模式,而是以多主模式运行
例如,没有备用服务器,因为只有一个服务器实例
——result-format ={表|标签垂直json json /漂亮的| | | | ndjson | json /生| json数组}
的值
resultFormat
MySQL Shell配置选项用于此会话。格式如下:如果
——json
命令行选项用于为会话的输出激活JSON包装——result-format
选项及其别名的值resultFormat
配置选项被忽略。控制密码是否自动存储在秘密存储区中。
总是
意味着密码总是被存储,除非它们已经在存储中或服务器URL被过滤器排除。从来没有
意味着密码永远不会被存储。提示
,这是默认值,意味着用户会被询问是否存储密码。看到第4.4节,“可插入密码存储”.——模式=
,的名字
- d
的名字
要使用的默认模式。
——server-public-key-path =
file_name
Shell等效的MySQL
——server-public-key-path
.如果
——server-public-key-path =
,并指定有效的公钥文件,它优先于file_name
——get-server-public-key
.重要的只支持经典的MySQL协议连接。
看到
caching_sha2_password
插件缓存SHA-2可插入认证.当在SQL模式下指定true时(这是默认值),MySQL Shell将在每个SQL语句之后显示警告(如果有的话)。如果指定false,则不显示警告信息。
——插座(=
,路径
]- s
(路径)
在Unix上,当指定一个路径时,该路径是用于连接的Unix套接字文件的名称。如果你指定
——套接字
没有值也没有等号,或者- s
如果没有值,则使用适当协议的默认Unix套接字文件。在Windows上,该路径是用于连接的命名管道的名称。管道名称不区分大小写。在Windows上,必须指定一个路径,而
——套接字
选项仅适用于经典的MySQL协议会话。如果指定的是端口或主机名,则不能指定套接字
本地主机
在Unix上或在Windows上一个句号(.)。以SQL模式启动,如果未将协议指定为连接信息的一部分,则自动检测要使用的协议。如果没有指定使用的协议,则默认使用X协议连接,退回到经典的MySQL协议连接。强制连接使用特定协议,请参阅
——sqlx
或——sqlc
选项。或者,指定协议作为类uri连接字符串的一部分使用,或者使用——港口
选择。看到第4.3节,MySQL Shell连接而且MySQL Shell端口更多信息。以SQL模式启动,强制连接使用经典的MySQL协议,例如在不支持X协议的服务器上使用MySQL Shell。如果你没有指定端口作为连接的一部分,当你提供这个选项时,MySQL Shell使用默认的经典MySQL协议端口,通常是3306。您所连接的端口必须支持经典的MySQL协议,因此,例如,如果您指定的连接使用X协议的默认端口33060,则连接失败并出现错误。看到第4.3节,MySQL Shell连接而且MySQL Shell端口更多信息。
以SQL模式启动,强制连接使用X协议。如果您没有指定端口作为连接的一部分,当您提供这个选项时,MySQL Shell使用默认的X协议端口,通常是33060。您所连接的端口必须支持X协议,因此,例如,如果您指定的连接使用经典的MySQL协议默认端口3306,则连接失败并出现错误。看到第4.3节,MySQL Shell连接而且MySQL Shell端口更多信息。
选项以
——ssl
指定是否使用SSL连接到服务器,并指示在哪里查找SSL密钥和证书。的mysqlshSSL选项的功能与MySQL服务器的SSL选项相同,请参见加密连接的命令选项更多信息。mysqlsh接受以下SSL选项:
——ssl-mode
,——ssl-ca
,——ssl-capath
,——ssl-cert
,——ssl cipher
,——ssl-crl
,——ssl-crlpath
,——ssl密钥
,——tls版本
.将您在MySQL Shell的SQL模式下发出的SQL语句发送到操作系统的系统日志工具(
syslog
在Unix上,或Windows事件日志)。SQL语句的系统日志只在MySQL Shell以交互模式启动时发生,因此,要么是正常启动,要么是使用——互动
选择。它不会发生在——执行
或——文件
选项在启动时用于运行mysqlsh
在批处理模式下。看到第12.3节“SQL语句的系统日志”更多信息。在交互模式下以标签分隔格式显示结果。该模式的默认设置是表格格式。选项的别名
——result-format =选项卡
选择。在批处理模式中以表格格式显示结果。该模式的默认值是制表符分隔格式。选项的别名
——result-format =表
选择。在启动时创建连接,在类似uri的字符串中指定连接选项使用类似uri的字符串或键值对连接到服务器.
——用户=
,user_name
- u
user_name
连接到服务器时使用的MySQL用户名。
激活对控制台的详细输出并指定详细级别。整数形式,取值范围是0 ~ 4。0显示不消息,这是在不指定该选项时的默认详细度设置。1显示错误、警告和信息消息(如果您在命令行上指定了没有值的选项,则这是默认设置)。2、3和4添加更高级别的调试消息。看到第十二章,MySQL Shell日志和调试更多信息。
——版本
,- v
显示MySQL Shell版本并退出。
——垂直
,- e
垂直显示结果,如
\ G
终止符用于SQL查询。选项的别名——result-format =垂直
选择。