我造了个轮子,mysql 命令行的客户端

57 天前
 nilai

mysql-go

mysql-go


为什么有这个轮子

仓库地址

Feature

mysql> show variables; | grep log_bin
Variable_name   Value
log_bin ON
log_bin_basename        /var/lib/mysql/binlog
log_bin_index   /var/lib/mysql/binlog.index
log_bin_trust_function_creators OFF
log_bin_use_v1_row_events       OFF
sql_log_bin     ON
6 rows in set (0.01 sec)

mysql> show variables; | grep binlog

mysql> show processlist; | grepv sleep
Id      User    Host    db      Command Time    State   Info
5       event_scheduler localhost       NULL    Daemon  1902954 Waiting on empty queue  NULL
115     root    192.168.3.101:63598     NULL    Query   0       init    show processlist
2 rows in set (0.00 sec)

使用例子 基本跟官方的用法一至

mysql -uroot -p123456 -h127.0.0.1 -P3306
mysql -u root -p 123456 -h 127.0.0.1 -P 3306
mysql -uroot -p123456 -h127.0.0.1 -P3306 -Ddbname
mysql -uroot -p123456 -h127.0.0.1 -P3306 -f xxx.sql
mysql -uroot -p123456 -h127.0.0.1 -P3306 -Ddbname < xxx.sql
mysql -uroot -p123456 -h127.0.0.1 -P3306 -Ddbname -e 'select * from users limit 10;'

安装

wget https://gitee.com/tinatmp/mysql/releases/download/mysql/mysql_linux -O /usr/local/bin/mysql  chmod +x /usr/local/bin/mysql

其它

2823 次点击
所在节点    分享创造
29 条回复
ramirezyolis808
57 天前
就包管理器安装一下客户端就可以了呀,又不需要完整安装 server ,有何复杂的?
Comyn
57 天前
和 mycli 优势在哪里
nilai
57 天前
@Comyn mycli 我看了一下 功能很强大, 但是跟我的需求不想符, 我主要需要的就是 单文件 静态编译 无其它库文件依赖, 我只要能连接上能执行基本的 sql 命令就行
nilai
57 天前
@ramirezyolis808 正常来说是这个道理, 可我接触的有的服务器是没有外网的, 没法直接 apt-get yum dnf 等操作
Rehtt
57 天前
nilai
57 天前
@Rehtt 感谢提供, 这个我看了一下, 这个功能更强大了, 我看它是基于 python 开发的, 它的依赖库估计不少,python 程序用 py2exe pyinstaller 类似的打包的话,一个体积太大, 另一个我曾经碰到过打包后可能存在兼容性问题, 我主要需要的就是 单文件 静态编译 无其它库文件依赖
miniliuke
57 天前
可以做个支持多种库的还是有点用的.......光支持 mysql 和官方的区别不大
bashbot
57 天前
没有外网的服务器但是允许你传文件上去?
这种情况遇到的比较少,遇到封网的服务器至少 scp 和拷贝粘贴也会禁掉,一般都是封端口加跳板机登录。
gbw1992
57 天前
收藏了
在一定特殊情况下可能会用到
sakilascott
57 天前
mysql 官方的 tar 包和 zip 包,解压后找到 bin 目录就能直接用,不需要安装啥的啊。。。。
iyiluo
57 天前
有用,很多生产环境不能联网,只允许通过堡垒机上传文件,但是自己装软件要处理一堆依赖冲突,特麻烦,这个时候有一个一键执行的程序很方便
nilai
57 天前
@iyiluo 终于有人能明白我的痛点,刚需了, 其它人都在扯功能,跟官方的区别
superchijinpeng
57 天前
官方提供了 binary 无依赖离线包: https://dev.mysql.com/downloads/shell/
FrankAdler
57 天前
有 sql 补全吗
idontnowhat2say
57 天前
有用,但我记得官方的 tar 包 bin 里的客户端没有动态库的依赖,可以直接用,你试试看
nilai
57 天前
@superchijinpeng 不可否认,mysqlsh 是一个非常强大的命令行工具, 它是用来准备替换 mysql 的, 它支持 python js 两种引擎, 它为 mgr 集群 主从同步提供了非常便利的操作, 我也一样在用它, 但是安装它稍微要麻烦一点点, 需要解压到目录,以及设置环境变量, 另外,mysqlsh 并不是完全的无依赖, 不信请看
root@cdfea3ff6ac5:/opt/test/mysql-shell-8.0.36-linux-glibc2.12-x86-64bit# ls /opt/test/mysql-shell-8.0.36-linux-glibc2.12-x86-64bit
bin lib libexec share
root@cdfea3ff6ac5:/opt/test/mysql-shell-8.0.36-linux-glibc2.12-x86-64bit# ldd /opt/test/mysql-shell-8.0.36-linux-glibc2.12-x86-64bit/bin/mysqlsh
linux-vdso.so.1 (0x00007fff30ea2000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f19e2d3d000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f19e2d38000)
libcrypto.so.3 => /opt/test/mysql-shell-8.0.36-linux-glibc2.12-x86-64bit/bin/../lib/mysqlsh/libcrypto.so.3 (0x00007f19e2600000)
libssl.so.3 => /opt/test/mysql-shell-8.0.36-linux-glibc2.12-x86-64bit/bin/../lib/mysqlsh/libssl.so.3 (0x00007f19e2200000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f19e2d27000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f19e2d20000)
libssh.so.4 => /opt/test/mysql-shell-8.0.36-linux-glibc2.12-x86-64bit/bin/../lib/mysqlsh/libssh.so.4 (0x00007f19e1e00000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f19e2d1b000)
libpython3.10.so.1.0 => /opt/test/mysql-shell-8.0.36-linux-glibc2.12-x86-64bit/bin/../lib/mysqlsh/libpython3.10.so.1.0 (0x00007f19e1800000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f19e2c3c000)
libantlr4-runtime.so.4.10.1 => /opt/test/mysql-shell-8.0.36-linux-glibc2.12-x86-64bit/bin/../lib/mysqlsh/libantlr4-runtime.so.4.10.1 (0x00007f19e1400000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f19e11e6000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f19e2c1a000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f19e1005000)
/lib64/ld-linux-x86-64.so.2 (0x00007f19e2d46000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f19e2bfb000)
libgssapi_krb5.so.2 => /opt/test/mysql-shell-8.0.36-linux-glibc2.12-x86-64bit/bin/../lib/mysqlsh/libgssapi_krb5.so.2 (0x00007f19e0c00000)
libkrb5.so.3 => /opt/test/mysql-shell-8.0.36-linux-glibc2.12-x86-64bit/bin/../lib/mysqlsh/libkrb5.so.3 (0x00007f19e0800000)
libk5crypto.so.3 => /opt/test/mysql-shell-8.0.36-linux-glibc2.12-x86-64bit/bin/../lib/mysqlsh/libk5crypto.so.3 (0x00007f19e0400000)
libcom_err.so.3 => /opt/test/mysql-shell-8.0.36-linux-glibc2.12-x86-64bit/bin/../lib/mysqlsh/libcom_err.so.3 (0x00007f19e0000000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f19e25f4000)
libkrb5support.so.0 => /opt/test/mysql-shell-8.0.36-linux-glibc2.12-x86-64bit/bin/../lib/mysqlsh/libkrb5support.so.0 (0x00007f19dfc00000)
libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f19e25eb000)
Jisxu
57 天前
https://github.com/xo/usql
你是否在寻找这个项目
nilai
57 天前
@FrankAdler 没有, 我尝试过的, 能实现, 但是有点麻烦, 不想花费太多时间在这个上面上。
nilai
57 天前
@Jisxu 感谢, 这个项目不错,比我写的这个轮子不知道要高明到哪里去了, 这个我看了一下,稍要学习一下怎么用,目前我下载了测试了一下, 发现 (not connected)=> my://root:123456@192.168.0.100:4000/test 一直停留在这里,感觉没有连接上一样,状态一直是 not connected ,数据库的连接信息确认是对的, 可能需要一点点学习成本,我有空研究一下
GTim
57 天前
不错,我用着,我也想打包一个命令行,随时可以使用的那种

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1023069

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX