MySQL命令行客户端工具之mycli
官网: mycli
目前市面上存在各种五花八门的图形界面客户端,如 phpmyadmin,navicat 以及官方的 MySQL Workbench 等等。而在日常工作或者使用中,通过命令连接 MySQL 还是更方便的,不过对于命令行爱好者或者对 MySQL 命令不熟悉的同学来说,如果只用官方提供的 client,其实体验还是比较差的,下面就给大家推荐一款绝佳的 MySQL 命令行客户端工具吧!
mycli 工具官方效果预览:
mycli 是一个 python 开发的客户端工具,其主要调用prompt_toolkit
库来构建交互式命令行应用程序。mycli 的作者 Thomas Roten 还开发了其他的一些客户端工具,有兴趣的小伙伴可以在到他们官网了解和下载使用。
安装
mycli 基于 Python,通过包管理器 pip 安装即可,如果程序在服务器上没有权限安装,可以联系 SA 在 puppet 里定义安装包。
pip install mycli
其他系统的安装方法以及兼容性问题,请参考官方文档
使用:
mycli -u username -h host database
配置文件
mycli 的配置主要分为两部分:
- 第一次运行 mycli 的时候会生成配置文件
~/.myclir
,这里不具体细说每个配置项 - 同时还会读取 MySQL 的配置文件中
[client]
部分
自动补全
大家知道 MySQL 官方 client 也支持补全功能,只要我们在配置文件加上--auto-rehash
即可,而且默认情况这个参数是开启的。不过使用过的小伙伴都知道,官方的这个功能比较弱鸡,下面用一张图展示:
我的 test 库里面其实只有两张表,但是敲tab
之后居然提示我有 769 个可能性,选择y
后会把各种函数,列之类的全部给你展示出来,这种提示其实根本没有用。好的,让我们再来看看 mycli 的自动补全功能:
通过这个图片我们可以发现,mycli 在自动补全这个功能上,封装得还是比较好的,针对不同的场景给出合理的提示。对比两者发现:
- 自动提示:当我们敲完关键字之后,mycli 会自动给我们展示出可能的结果,并且会预生成一个预期的结果,这个时候我们只需要敲
->
方向键就可以补全。官方的 client 需要我们敲 tab 键才会有提示。 - 智能提示:官方 client 的 tab 提示有时候是比较弱鸡的,并不能结合上下文给出我们想要的提示。反观 mycli 则是默认的 MySQL 客户端的现代替代品,这个工具对 MySQL 来说就像 ipython 之于标准 Python REPL 一样,会感知上下文并自动补全。
高危操作二次确认
这个功能对于时常会手抖的人来说简直就是福音。
mycli 会对高危操作进行识别,当我们回车执行 sql 的时候,会提醒我们所做的操作对数据库是比较危险的,需要我们再做一次确认:
当我们执行 drop database 时候,mycli 会先提醒我们正在做危险操作,要做一次确认,选择 n
则返回 Wise choice
! 确认执行则选择y
, mycli 会返回Your call
!
目前 mycli 对以下 5 种操作会进行二次确认:包括drop, shutdown, delete, truncate, alter
。在生产库上我们难免有时候会碰到删库删表的需求,如果这个时候使用了 mycli 这款神器,我们可能就会因为多了这么一次确认,而避免了重大故障的发生,不会对业务造成毁灭性的打击。
语法高亮
使用过程中,容易对 mycli 默认的主题产生审美疲劳?没事,mycli 官方已经提供了多套主题任你选择:
1 . 打开 mycli 配置文件
在 Linux 下:
vim ~/.myclirc
2 . 修改 syntax_style 属性值
找到 syntax_style = default 属性,修改为自己喜欢的主题即可。
3 . 保存并退出 vim,重新启动 MyCli 就可以看到设置后的主题了。
格式化 SQL 的输出
很多小伙伴可能会有这样一个困扰,连接数多的时候 show processlist 看当前连接会发现数据一下子就刷满整个屏幕了,也不好捕捉到自己想看的结果,作为老司机这个时候可能就会告诉你用 pager 啊。是的我们可以用 pager less 甚至 pager grep 过滤指定条件的内容。而 mycli 默认就开了这个功能,下面用一张图来展示下:
收藏常用命令
贴心的 mycli 还帮我们做了常用命令的收藏功能,对于一些比较冗长的,不容易记忆的sql
,我们可以使用 mycli 收藏起来,这样下次使用的时候就可以快捷调用了。
使用方法:
- 查询所有保存内容:\f
- 保存 sql: \fs 别名 保存一个查询
- 执行收藏的 sql: \f 别名 运行它
- \fd 别名 删除指定的一条
sql
上面展示了,mycli 收藏命令还有参数替换功能,使用参数调用收藏查询时,只需在别名后添加参数即可。
这里需要提醒一下,如果收藏drop database
之类的危险操作,并通过这种方式调用执行是没有二次确认的提示的,小伙伴们要特别注意了!
日志记录
log_file = ~/.mycli.log
日志记录功能,默认打开以〜/ .mycli.log 的形式存储在主文件夹中。这个功能主要对调试或开发 mycli 非常有用。audit_log = ~/.mycli-audit.log
审核日志功能,这将使用时间戳记录每个命令及其输出
多行模式
开启多行模式的方法有两种:
- 永久修改:
sudo vim ~/.myclirc
,找到multi_line = True
改为True
- 临时修改:按 F3 切换到多行模式
下面来看具体效果,对于以下这组 sql:
select * from sbtest1 where id in
(1432790,731065,40517,922026,942141,
31436572,1526782,529787,818111,659559,
41391327,725241,481014,1349334,1076515);
默认情况下我们输入会报错:
开启多行模式之后:
因为 mycli 默认用回车执行 sql 语句,而不是用分号+回车,导致不能多行书写。
登录凭证
mycli 支持三种保存和使用凭证的方式:.my.cnf
,login path
, DSN
别名。
前面两种方法官方 client 也可以使用,这里不再介绍。mycli 独有的一种登录凭证是 DSN 别名,可以在.myclirc
配置文件的[alias_dsn]
选项组下进行设置,如:
[alias_dsn]
testconn = mysql://root:123456@localhost:3306
并用 mycli -d testconn 连接到对应的数据库即可。当然,如果有多个服务器,只要配置多个别名就可以了。
这种方式虽然方便,但是在服务器上一般不建议这么操作,因为密码是明文保存的,存在泄漏的风险。
更多功能
除了以上介绍的几种功能外,mycli 还提供了 SSL 连接,漂亮打印表格数据,循环执行 sql等等功能哦!更多内容就参考 mycli 官方文档 (https://www.mycli.net/)啦!
MySQL命令行客户端工具之mycli的更多相关文章
- mysql命令行客户端结果分页浏览
转载请注明出处:http://xiezhenye.com/2008/06/mysql%e5%91%bd%e4%bb%a4%e8%a1%8c%e5%ae%a2%e6%88%b7%e7%ab%af%e7% ...
- MySQL基础 - mysql命令行客户端
在Linux系统当中,mysql作为一个客户端命令程序,在很大程度上连接数据库都是使用mysql,因此很有必要熟悉mysql命令行的使用. 这里假设数据库用户为icebug,密码为icebug_pas ...
- MySQL增强版命令行客户端连接工具(mycli)
效果: 安装: http://www.mycli.net/install 官网: http://www.mycli.net/install
- svn - Subversion 命令行客户端工具
SYNOPSIS 总览 svn command [options] [args] OVERVIEW 概述 Subversion 是一个版本控制系统,允许保存旧版本的文件和目录 (通常是源代码),保存一 ...
- [MySQL]命令行工具和基本操作
[MySQL]命令行工具和基本操作 一 MySQL命令行工具 (查看帮助 ---help,或 -?) 1)MySQL MySQL是一个简单的SQL外壳(有GNU readline功能).它支持交互式 ...
- Mysql 命令行工具
1.Mysql命令行工具分为两类:服务端命令行工具和客户端命令行工具. 2.服务端工具 mysql_install_db:建库工具 mysqld_safe:Mysql服务的启动工具,mysqld_sa ...
- MySQL命令行工具各功能说明(转)
MySQL 服务器端使用工具程序 mysqld - SQL 后台程序(即 MySQL 服务器进程).该程序必须启动运行,才能连接服务器来访问数据库. mysqld_safe - 服务器启动脚本,可以通 ...
- 用批处理启动MySQL命令行工具
最近在看MySQL,安装好之后,每次在开始菜单去启动MySQL命令行工具的时候,都是直接用root用户连接我本地的数据库 输入密码开始工作,但是要连接服务器上的MySQL的话,就要去CMD下运行 : ...
- MySQL初夜(乱码问题,命令行客户端使用)
一.乱码问题 装好MySQL,并且将数据从SQLServer导入到MySQL之后,程序一直报错. 解决方案: 首先,输入命令: show variables like "character_ ...
- MYSQL 命令行工具自动登录的方法
MYSQL 命令行工具自动登录的方法 1. 需求提出 由于在linux 环境下,经常需要使用mysql(command-line tool) 终端连接到MYSQL DB服务. 其中大致的语法如下: m ...
随机推荐
- 使用 nuxi preview 命令预览 Nuxt 应用
title: 使用 nuxi preview 命令预览 Nuxt 应用 date: 2024/9/8 updated: 2024/9/8 author: cmdragon excerpt: 摘要:本文 ...
- C++17: 用折叠表达式实现一个IsAllTrue函数
前言 让我们实现一个 IsAllTrue 函数,支持变长参数,可传入多个表达式,必须全部计算为true,该函数才返回true. 本文记录了逐步实现与优化该函数的思维链,用到了以下现代C++新特性知识, ...
- Java实现英语作文单词扫盲程序
来自背英语四级单词的突发奇想: 是否可以通过Java语言实现一个随机抽取作文中单词进行复习的程序. 首先,展示下成果: 点击查看代码 package Demo; import java.util.Ar ...
- Go runtime 调度器精讲(十):异步抢占
原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 前面介绍了运行时间过长和系统调用引起的抢占,它们都属于协作式抢占.本讲会介绍基于信号的真抢占式调度. 在介绍真抢占式调度之前看下 Go 的两种抢 ...
- C++ 第二节课 结构体, 字符串 和 C语言的区分
1 #include <iostream> 2 3 using namespace std; 4 5 6 // 结构体 7 struct Stu{ 8 string name; 9 int ...
- docker安装过程 - 下载mysql
1. 下载必要的包 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 2. 指定虚拟机去哪里安装 docker sudo ...
- for循环、break和continue、二重循环
循环语句 循环语句可以反复多次执行同一组语句,for关键字可以用来编写循环:可以在for循环里让一个变量依次代表一组数字,然后使用同一组语句处理这个变量代表的每个数字.这个变量叫做循环变量,按照统一的 ...
- 云原生周刊:Argo CD v2.12 发布候选版本 | 2024.06.24
开源项目推荐 kOps kOps - Kubernetes Operations,是一个用于创建.销毁.升级和维护生产级高可用 Kubernetes 集群的工具.它支持在 AWS.GCP.Digita ...
- tmux从入门到装x
原文: https://blog.csdn.net/CSSDCC/article/details/121231906 安装方法: # Ubuntu 或 Debian $ sudo apt-get in ...
- 低配置PC环境下的魔兽世界游戏体验:ToDesk云电脑性能测试分析
近期魔兽世界再度开服,吸引了众多游戏老玩家回归.然而随着游戏内容的不断更新,其对电脑配置的要求也在逐渐升提高.对于许多电脑配置较低的老玩家,如何在不升级硬件的情况下流畅运行魔兽世界成为了一个难题. 随 ...