您的位置:首页 > 数据库 > MySQL

【小白福利—初级DBA入门必看】MySQL常用工具介绍(三)——客户端工具MySQL

2019-06-19 18:11 495 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_44994688/article/details/92840116

点击查看MySQL 常用工具介绍系列文章
1 简介
mysql是一个带有输入行编辑功能的简单sql shell,主要用于执行sql语句、管理数据库等,是MySQL提供的客户端工具之一。
基本调用方式:
Usage: mysql [OPTIONS] [database]。
选项可以从选项文件的[mysql]、[client]选项组读取。
它支持交互式和非交互式使用。交互模式(包括普通语句以及source)、–execute非交互模式,结果默认以表格形式显示,mysql < 非交互模式时以制表符作为列分隔符显示。交互模式显示除结果集外的其他信息,如影响行数;非交互模式不显示。可以使用命令选项更改输出格式。如下图:


2 选项介绍与部分选项举例说明
#注意:这里的默认值,不是使用“程序名 --no-defaults --help”打印的输出,而是指未指定时内部初始值,该值可被自身选项显示指定,也可能会受其他互斥选项、相关选项更改。这里只写出默认启用的布尔型选项,以及有内部值的其他选项。有内部值的选项可以不显示给出。
2.1 所有客户端共有选项
mysql作为MySQL提供的客户端的之一,具有以下五种通用选项。
2.1.1 影响选项文件读取的选项

2.1.2 帮助与版本

2.1.3 连接的建立、

连接方式参数说明:优先级–protocol>–pipe>-h;
linux两种连接方式:若未指定–host和-h,或指定为localhost,或指定为空(–host=或–host=’’),则使用unix套接字;否则使用tcp/ip。
windows三种连接方式:若未指定–host和-h,或指定为localhost,且服务端开启了共享内存,则使用共享内存;若指定为.,或tcp禁用且socket未指定或主机指定为空(–host=),则使用命名管道;否则tcp。
连接方式举例
全平台使用tcp/ip:
mysql --protocol=tcp [-h127.0.0.1] [–port=3306]
mysql -h127.0.0.1 [–port=3306]

unix使用socket:
mysql [–host=localhost] [–socket=/tmp/mysql.sock]

windows使用命名管道:需在服务端开启命名管道支持
mysql --protocol=pipe
mysql --pipe
mysql --host=.

windows使用共享内存:未知,存在问题。理论上应当在服务上开启共享内存后使用
mysql [–host=localhost] --shared-memory-base-name=MYSQL,但是实际上使用的tcp,或者
mysql --protocol=memory --shared-memory-base-name=MYSQL,但是会报错ERROR 2046 (HY000): Can’t open shared memory; cannot send request event to server (5);
2.1.4 字符集

2.1.5 调试日志

2.2 mysql特定选项



3 mysql客户端内置命令
mysql将每个SQL发送到服务器;但mysql有一组自己解释的命令,注意长格式或命名格式大小写不敏感,短格式敏感。

4 mysql提示符的设定
4.1 四种方式:

4.2 可以设定的格式


5 mysql的输入历史记录
unix下,mysql可以将输入记录到环境变量MYSQL_HISTFILE指定的文件中(若变量不存在,默认记录到~/.mysql_history中)。
全平台下,–syslog还可以将输入记录到unix的syslog或windows的windows event log中。目标文件取决于系统,如linux下通常为/var/log/messages。
5.1 记录发生的条件
仅当交互模式中,输入可以被记录。非交互模式(如从文件中读source filename、从管道中读mysql < filename)中的sql输入不被记录。使用–batch或–execute同样不记录。当在交互模式中,可以使用上下箭头来调用历史输入。
如果输入匹配忽略列表,则不记录。忽略列表默认为"IDENTIFIED:PASSWORD",可以通过MYSQL_HISTIGNORE环境变量或–histignore选项新增。匹配任意字串,?匹配任意字符。如下示例将不记录含update或delete或identified或password的输入。
shell> mysql --histignore=“UPDATE:DELETE”
5.2 控制交互模式的历史记录
忽略所有记录:–histignore=""
删除所有记录,并禁用记录功能:
rm -rf ~/.mysql_history;
export MYSQL_HISTFILE=/dev/null; 或者 ln -s /dev/null $HOME/.mysql_history;
5.3 输入记录的格式
输入的每一行都被记录为单独一行,若该行不是完整的语句集,输入完全后还有完整的一行语句集输入被记录。如:
mysql> SELECT
-> ‘Today is’
-> ,
-> CURDATE()
-> ;
将记录为
SELECT
‘Today is’
,
CURDATE()
;
SELECT ‘Today is’ , CURDATE();
syslog中还会增加额外信息:–表示未知或没有。例子如下:
Mar 7 12:39:25 myhost MysqlClient[20824]: SYSTEM_USER:‘oscar’, MYSQL_USER:‘my_oscar’, CONNECTION_ID:23, DB_SERVER:‘127.0.0.1’, DB:’–’, QUERY:‘USE test;’

6 mysql的服务端帮助
使用方式:
mysql> help search_string
search_string可以使用%表示任意字串,_表示任意字符。
注意:要返回正确信息,要先初始化服务器中的帮助表。

可以使用help contents查看帮助的内容目录

mysql> help contents
You asked for help about help category: "Contents"
For more information, type 'help <item>', where <item> is one of the
following categories:
Account Management
Administration
Data Definition
Data Manipulation
Data Types
Functions
Functions and Modifiers for Use with GROUP BY
Geographic Features
Language Structure
Plugins
Storage Engines
Stored Routines
Table Maintenance
Transactions
Triggers

搜索字符串多个匹配,则显示匹配主题的列表

mysql> help logs
Many help items for your request exist.
To make a more specific request, please type 'help <item>',
where <item> is one of the following topics:
SHOW
SHOW BINARY LOGS
SHOW ENGINE
SHOW LOGS
使用主题作为搜索字符串可以查看该主题的帮助:
mysql> help show binary logs
Name: 'SHOW BINARY LOGS'
Description:
Syntax:
SHOW BINARY LOGS
SHOW MASTER LOGS

Lists the binary log files on the server. This statement is used as
part of the procedure described in [purge-binary-logs], that shows how
to determine which logs can be purged.

mysql> SHOW BINARY LOGS;
+---------------+-----------+
| Log_name      | File_size |
+---------------+-----------+
| binlog.000015 |    724935 |
| binlog.000016 |    733481 |
+---------------+-----------+

搜索字符串不匹配,则搜索失败:

mysql> help me

Nothing found
Please try to run 'help contents' for a list of all accessible topics

7 执行文本中的sql

shell> mysql < text_file
mysql> source file_name
mysql> \. file_name

8 小提示
8.1 输入行编辑功能:如基本的方向键、退格、enter等。
windows下,组合键用法和命令行控制台一致;
unix下,取决于编译mysql使用的输入库(如libedit、readline等)。二进制文件默认使用libedit,Control+W删除当前行输入的光标前的内容,control+U删除当前行。若是使用readline,其默认设置为control+W删除光标前的一个单词,control+U删除当前行输入的光标前的内容。

当然,可以修改输入库的配置文件(通常用户目录下.editrc for libedit and .inputrc for readline)更改按键的行为,如使用readline风格:
bind “^W” ed-delete-prev-word
bind “^U” vi-kill-line-prev
注意,可以在配置文件末位加入bind作为单独一行,以使mysql启动时打印绑定设置。

8.2 宽结果可以使用垂直显示
8.3 新手可以启用–safe-updates模式,实际上是设置服务器会话变量:
如mysql --safe-updates --select-limit=1000 --max-join-size=1000000相当于执行如下语句:
SET sql_safe_updates=1, sql_select_limit=1000, max_join_size=1000000; #1000可以使用–selet_limit设置,max_join_size可以使用–max_join_size设置。

8.4 禁用自动重连–skip-reconnect:
在丢失与服务器的连接的情况下,执行语句相当于开启一个新连接后执行,因为一些变量上下文等丢失,语句可能导致意料外的结果。

8.5 可使用三方工具代替mysql执行sql、管理数据库
如mycli具备mysql的功能,同时支持更好的自动补全功能、语法突出显示等功能。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: