文章目录
- mysql - MySQL命令行客户端
- Mysql客户端选项
- 参考文档
mysql - MySQL命令行客户端
mysql是具有输入行编辑功能的简单SQL Shell。它支持交互和非交互使用。交互使用时,查询结果以ASCII表格式显示。当非交互式使用(例如,用作过滤器)时,结果以制表符分隔的格式显示。可以使用命令选项更改输出格式。
如果由于内存不足而导致大型结果集出现问题,请使用 --quick 选项。这迫使mysql一次从服务器检索一行结果,而不是在显示之前检索整个结果集并将其缓冲到内存中。这是通过使用客户机/服务器库中的mysql_use_result()C API函数而不是mysql_store_result()返回结果集来完成的。
注意:另外,MySQL Shell提供对X DevAPI的访问。
使用mysql非常简单。从命令解释器的提示中调用它,如下所示:
shell> mysql db_name
或者:
shell> mysql --user=user_name --password db_name
Enter password: your_password
然后输入一个SQL语句,以;, \g 或者 \G 结束。然后按Enter键。
键入Control + C会中断当前语句(如果存在)。
您可以在脚本文件(批处理文件)中执行SQL语句,如下所示:
shell> mysql db_name < script.sql > output.tab
在Unix上,mysql客户端将交互式执行的语句记录到历史文件中。
Mysql客户端选项
mysql支持很多选项,可以在命令行或选项文件的 [mysql] 和 [client] 组中指定这些选项。因为选项很多,仅翻译如下几个选项。
- --bind-address=ip_address
在具有多个网络接口的计算机上,使用此选项选择用于连接到MySQL服务器的接口。 - --character-sets-dir=dir_name
字符集的安装目录。 - --compress, -C
如果可能,压缩客户端和服务器之间发送的所有信息。 - --database=db_name, -D db_name
要使用的数据库。这在选项文件中有用。 - --debug[=debug_options], -# [debug_options]
编写调试日志。典型的debug_options字符串是d:t:o,file_name。默认值是d:t:o,/tmp/mysql.trace。
仅当MySQL是使用WITH_DEBUG构建的,此选项才可用。Oracle提供的MySQL版本二进制文件不使用此选项构建。 - --default-character-set=charset_name
使用charset_name作为客户端和连接的默认字符集。
如果操作系统使用一个字符集,而mysql客户端默认使用另一个字符集,则此选项很有用。在这种情况下,输出格式可能不正确。通常,您可以通过使用此选项强制客户端使用系统字符集来解决此类问题。 - --defaults-extra-file=file_name
在全局选项文件之后但在用户选项文件之前(在Unix上)读取此选项文件(可以参考选项文件处理顺序)。如果该文件不存在或无法访问,则发生错误。如果将file_name指定为相对路径名而不是完整路径名,则将其解释为相对于当前目录。 - --defaults-file=file_name
仅使用给定的选项文件。如果该文件不存在或无法访问,则发生错误。如果将file_name指定为相对路径名而不是完整路径名,则将其解释为相对于当前目录。
例外:尽管使用 --defaults-file,客户端程序也会读取 .mylogin.cnf。 - --host=host_name, -h host_name
连接到给定host上的MySQL服务器。 - --max-allowed-packet=value
用于客户端/服务器通信的缓冲区的最大大小。默认值为16MB,最大为1GB。 - --password[=password], -p[password]
用于连接到服务器的MySQL帐户的密码。密码值是可选的。如果没有给出,mysql会提示输入一个。如果给出,则 --password= 或 -p 与后面的密码之间必须没有空格。如果未指定密码选项,则默认为不发送密码。
在命令行上指定密码应该被认为是不安全的。为避免在命令行上输入密码,请使用选项文件。
要明确指定没有密码,并且mysql不应提示输入密码,请使用 --skip-password 选项。 - --port=port_num, -P port_num
对于TCP/IP连接,使用的端口号。 - --protocol={TCP|SOCKET|PIPE|MEMORY}
用于连接到服务器的连接协议。当其他连接参数通常导致使用所需协议以外的协议时,它非常有用。 - --socket=path, -S path
对于到localhost的连接,要使用的Unix套接字文件,或者在Windows上,要使用的命名管道的名称。 - --syslog, -j
此选项使mysql将交互式语句发送到系统日志记录工具。在Unix上,这是syslog。记录的消息出现的目的地取决于系统。在Linux上,目标通常是/var/log/messages文件。
这是在Linux上使用 --syslog 生成的输出示例。格式化此输出以提高可读性;每条记录的消息实际上只占一行。示例
:
Linux环境下,登录mysql shell界面,并执行语句。
# ./mysql --protocol=tcp --port=3307 -j
mysql> show databases;
mysql> use sys
mysql> show tables;
查询messages日志,发现相应输出:
# tail -f /var/log/messages
Jan 19 21:16:52 compute1 MysqlClient: SYSTEM_USER:'root', MYSQL_USER:'--', CONNECTION_ID:5, DB_SERVER:'--', DB:'--', QUERY:'show databases;'
Jan 19 21:17:11 compute1 MysqlClient: SYSTEM_USER:'root', MYSQL_USER:'--', CONNECTION_ID:5, DB_SERVER:'--', DB:'sys', QUERY:'use sys'
Jan 19 21:17:23 compute1 MysqlClient: SYSTEM_USER:'root', MYSQL_USER:'--', CONNECTION_ID:5, DB_SERVER:'--', DB:'sys', QUERY:'show tables;'
computer1是主机名。
- --tee=file_name
将输出副本追加到给定文件。此选项仅在交互模式下有效。(这应该调用系统的tee命令) - --user=user_name, -u user_name
用于连接到服务器的MySQL帐户的用户名。 - --xml, -X
产生XML输出。
格式:
<field name="column_name">NULL</field>
--xml与mysql一起使用时的输出与mysqldump的输出匹配。
XML输出还使用XML名称空间,如下所示:
# ./mysql --protocol=tcp --port=3307 -j --xml -e "SHOW VARIABLES LIKE 'version%'"
<?xml version="1.0"?>
<resultset statement="SHOW VARIABLES LIKE 'version%'
" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<field name="Variable_name">version</field>
<field name="Value">5.7.23</field>
</row>
<row>
<field name="Variable_name">version_comment</field>
<field name="Value">MySQL Community Server (GPL)</field>
</row>
<row>
<field name="Variable_name">version_compile_machine</field>
<field name="Value">x86_64</field>
</row>
<row>
<field name="Variable_name">version_compile_os</field>
<field name="Value">linux-glibc2.12</field>
</row>
</resultset>
最近需要深入学习一下C语言和PYTHON,写博客的时间会受到考验。我尽量做好时间管理,尽量保证文章的含金量不下降太多。
参考文档
https://dev.mysql.com/doc/refman/5.7/en/mysql-commands.html