kubertest自动补全命令不生效_mycli,一款让你忘记mysql-client的命令行客户端神器

1f53a2105778b514c63216819379d290.png

2c8d265e7cbfbbbf7ec3fd29cf9efbd2.png
冰焰
网易游戏高级运维工程师,同时也是一个热爱健身的五好青年。目前的工作方向是负责网易游戏 MySQL SaaS 的后台功能开发和 MySQL 运维工作。

前言

目前市面上存在各种五花八门的图形界面客户端,如 phpmyadmin,navicat 以及官方的 MySQL Workbench 等等。而在日常工作或者使用中,通过命令连接 MySQL 还是更方便的,不过对于命令行爱好者或者对 MySQL 命令不熟悉的同学来说,如果只用官方提供的 client,其实体验还是比较差的,下面就给大家推荐一款绝佳的 MySQL 命令行客户端工具吧!

mycli 工具官方效果预览:

dd6728f8c4e267f016e2e080b41a0377.png

mycli 是一个 python 开发的客户端工具,其主要调用prompt_toolkit 库来构建交互式命令行应用程序。mycli 的作者 Thomas Roten 还开发了其他的一些客户端工具,有兴趣的小伙伴可以在到他们官网了解和下载使用。

安装

mycli 基于 Python,通过包管理器 pip 安装即可,如果程序在服务器上没有权限安装,可以联系 SA 在 puppet 里定义安装包。

1pip install mycli

其他系统的安装方法以及兼容性问题,请参考官方文档

使用

1$ mycli -u my_user -h my_host.com my_database

配置文件

mycli 的配置主要分为两部分:

  • 第一次运行 mycli 的时候会生成配置文件 ~/.myclir,这里不具体细说每个配置项
  • 同时还会读取 MySQL 的配置文件中 [client] 部分

功能介绍

下面来介绍下主要的几个功能

自动补全

大家知道 MySQL 官方 client 也支持补全功能,只要我们在配置文件加上--auto-rehash即可,而且默认情况这个参数是开启的。不过使用过的小伙伴都知道,官方的这个功能比较弱鸡,下面用一张图展示:

a3ccb28dcf48e5aee4659e28a281d768.png

我的 test 库里面其实只有两张表,但是敲tab之后居然提示我有 769 个可能性,选择y后会把各种函数,列之类的全部给你展示出来,这种提示其实根本没有用。好的,让我们再来看看 mycli 的自动补全功能:

4edae10c34c9cbc993098c7475cb3d80.png

通过这个图片我们可以发现,mycli 在自动补全这个功能上,封装得还是比较好的,针对不同的场景给出合理的提示。对比两者发现:

  • 自动提示:当我们敲完关键字之后,mycli 会自动给我们展示出可能的结果,并且会预生成一个预期的结果,这个时候我们只需要敲 -> 方向键就可以补全。官方的 client 需要我们敲 tab 键才会有提示。
  • 智能提示:官方 client 的 tab 提示有时候是比较弱鸡的,并不能结合上下文给出我们想要的提示。反观 mycli 则是默认的 MySQL 客户端的现代替代品,这个工具对 MySQL 来说就像 ipython 之于标准 Python REPL 一样,会感知上下文并自动补全。

高危操作二次确认

这个功能对于时常会手抖的人来说简直就是福音。

mycli 会对高危操作进行识别,当我们回车执行 sql 的时候,会提醒我们所做的操作对数据库是比较危险的,需要我们再做一次确认:

9e444e1783b63f4f5792ecc6d0a914f8.png

02f1baab3adbe03557eaa51f50da88f7.png

当我们执行 drop database 时候,mycli 会先提醒我们正在做危险操作,要做一次确认,选择 n 则返回 Wise choice! 确认执行则选择y, mycli 会返回Your call!

目前 mycli 对以下 5 种操作会进行二次确认:包括drop, shutdown, delete, truncate, alter。在生产库上我们难免有时候会碰到删库删表的需求,如果这个时候使用了 mycli 这款神器,我们可能就会因为多了这么一次确认,而避免了重大故障的发生,不会对业务造成毁灭性的打击。

语法高亮

使用过程中,容易对 mycli 默认的主题产生审美疲劳?没事,mycli 官方已经提供了多套主题任你选择:

步骤:

1 . 打开 mycli 配置文件

在 Linux 下:

1vim ~/.myclirc 

2 . 修改 syntax_style 属性值

找到 syntax_style = default 属性,修改为自己喜欢的主题即可。

1 Syntax Style. Possible values: manni, igor, xcode, vim, autumn, vs, rrt,
2 native, perldoc, borland, tango, emacs, friendly, monokai, paraiso-dark,
3 colorful, murphy, bw, pastie, paraiso-light, trac, default, fruity
4syntax_style = default

从以上配置文件可以看出,mycli 自带的主题有挺多的,大家喜欢哪个一种效果具体看官方文档颜色主题的介绍或者自己尝试即可。

3 . 保存并退出 vim,重新启动 MyCli 就可以看到设置后的主题了。

格式化 SQL 的输出

很多小伙伴可能会有这样一个困扰,连接数多的时候 show processlist 看当前连接会发现数据一下子就刷满整个屏幕了,也不好捕捉到自己想看的结果,作为老司机这个时候可能就会告诉你用 pager 啊。是的我们可以用 pager less 甚至 pager grep 过滤指定条件的内容。而 mycli 默认就开了这个功能,下面用一张图来展示下:

10581b5306213099a736aead75ffece9.png

mycli 默认情况下将 MySQL 的输出会通过 less 命令 进行格式化输出,mycli 会先检查本机 less 的配置,如果有则根据自己的配置使用,如果没有则会使用比较受欢迎的配置 export LESS ="-XFR"。

收藏常用命令

贴心的 mycli 还帮我们做了常用命令的收藏功能,对于一些比较冗长的,不容易记忆的sql,我们可以使用 mycli 收藏起来,这样下次使用的时候就可以快捷调用了。

使用方法:

  • 查询所有保存内容:f
  • 保存 sql: fs 别名 保存一个查询
  • 执行收藏的 sql: f 别名 运行它
  • fd 别名 删除指定的一条sql

保存和查看常用的 sql

5ac2d7db0d101c1c2dc86ac3eb005ecc.png

快速调用收藏的 sql

9b0a998bee7a854a7e9700345a74fbec.png

删除收藏的 sql

406215a148ffe8b6c21f5fda7b2bf313.png

上面展示了,mycli 收藏命令还有参数替换功能,使用参数调用收藏查询时,只需在别名后添加参数即可。

这里需要提醒一下,如果收藏drop database之类的危险操作,并通过这种方式调用执行是没有二次确认的提示的,小伙伴们要特别注意了!

日志记录

  • log_file = ~/.mycli.log 日志记录功能,默认打开以〜/ .mycli.log 的形式存储在主文件夹中。这个功能主要对调试或开发 mycli 非常有用。
  • audit_log = ~/.mycli-audit.log 审核日志功能,这将使用时间戳记录每个命令及其输出。

多行模式

开启多行模式的方法有两种:

  • 永久修改:sudo vim ~/.myclirc,找到multi_line = True 改为True
  • 临时修改:按 F3 切换到多行模式

下面来看具体效果,对于以下这组 sql:

1select * from sbtest1 where id in
2(1432790,731065,40517,922026,942141,
31436572,1526782,529787,818111,659559,
41391327,725241,481014,1349334,1076515);

默认情况下我们输入会报错:

aee03bd344623fa26a057d394a95fad0.png

开启多行模式之后:

2501efb54cb60ce86c56f98a575875e1.png

因为 mycli 默认用回车执行 sql 语句,而不是用分号+回车,导致不能多行书写。

登录凭证

mycli 支持三种保存和使用凭证的方式:.my.cnflogin pathDSN别名。

前面两种方法官方 client 也可以使用,这里不再介绍。mycli 独有的一种登录凭证是 DSN 别名,可以在.myclirc配置文件的[alias_dsn]选项组下进行设置,如:

1[alias_dsn]
2testconn = mysql://root:123456@localhost:3306

并用 mycli -d testconn 连接到对应的数据库即可。当然,如果有多个服务器,只要配置多个别名就可以了。

9d10814183384e71bb8615cc454a557d.png

这种方式虽然方便,但是在服务器上一般不建议这么操作,因为密码是明文保存的,存在泄漏的风险。

更多功能

除了以上介绍的几种功能外,mycli 还提供了 SSL 连接漂亮打印表格数据循环执行 sql等等功能哦!更多内容就参考 mycli 官方文档 (https://www.mycli.net/)啦!

总结

好的~看完上面的介绍是不是有点心动,想要替换手上 mysql-client 呢! 如果你想拥有更便捷更安全的 MySQL 客户端,如果你担心自己记不住复杂的命令,那么事不宜迟赶紧动手装一个吧!

119b3fa69d44a590d5fc8b2d520192d8.png

往期精彩

KSM 应用实践

Doom Emacs 简介

记一次 MongoDB 慢日志优化历程

S3 的中文编码问题及修复方案

通用实时日志分类统计实践

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值