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

2024-03-13 08:01:22 +08:00
 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

其它

3333 次点击
所在节点    分享创造
29 条回复
ZeekChatCom
2024-03-13 08:05:34 +08:00
就包管理器安装一下客户端就可以了呀,又不需要完整安装 server ,有何复杂的?
Comyn
2024-03-13 08:08:12 +08:00
和 mycli 优势在哪里
nilai
2024-03-13 08:16:56 +08:00
@Comyn mycli 我看了一下 功能很强大, 但是跟我的需求不想符, 我主要需要的就是 单文件 静态编译 无其它库文件依赖, 我只要能连接上能执行基本的 sql 命令就行
nilai
2024-03-13 08:18:04 +08:00
@ramirezyolis808 正常来说是这个道理, 可我接触的有的服务器是没有外网的, 没法直接 apt-get yum dnf 等操作
Rehtt
2024-03-13 08:18:21 +08:00
nilai
2024-03-13 08:25:05 +08:00
@Rehtt 感谢提供, 这个我看了一下, 这个功能更强大了, 我看它是基于 python 开发的, 它的依赖库估计不少,python 程序用 py2exe pyinstaller 类似的打包的话,一个体积太大, 另一个我曾经碰到过打包后可能存在兼容性问题, 我主要需要的就是 单文件 静态编译 无其它库文件依赖
miniliuke
2024-03-13 08:50:37 +08:00
可以做个支持多种库的还是有点用的.......光支持 mysql 和官方的区别不大
bashbot
2024-03-13 08:54:04 +08:00
没有外网的服务器但是允许你传文件上去?
这种情况遇到的比较少,遇到封网的服务器至少 scp 和拷贝粘贴也会禁掉,一般都是封端口加跳板机登录。
gbw1992
2024-03-13 08:54:06 +08:00
收藏了
在一定特殊情况下可能会用到
sakilascott
2024-03-13 08:58:03 +08:00
mysql 官方的 tar 包和 zip 包,解压后找到 bin 目录就能直接用,不需要安装啥的啊。。。。
iyiluo
2024-03-13 09:20:03 +08:00
有用,很多生产环境不能联网,只允许通过堡垒机上传文件,但是自己装软件要处理一堆依赖冲突,特麻烦,这个时候有一个一键执行的程序很方便
nilai
2024-03-13 09:25:07 +08:00
@iyiluo 终于有人能明白我的痛点,刚需了, 其它人都在扯功能,跟官方的区别
superchijinpeng
2024-03-13 09:31:54 +08:00
官方提供了 binary 无依赖离线包: https://dev.mysql.com/downloads/shell/
FrankAdler
2024-03-13 09:36:31 +08:00
有 sql 补全吗
idontnowhat2say
2024-03-13 09:38:27 +08:00
有用,但我记得官方的 tar 包 bin 里的客户端没有动态库的依赖,可以直接用,你试试看
nilai
2024-03-13 09:42:52 +08:00
@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
2024-03-13 09:44:38 +08:00
https://github.com/xo/usql
你是否在寻找这个项目
nilai
2024-03-13 09:46:14 +08:00
@FrankAdler 没有, 我尝试过的, 能实现, 但是有点麻烦, 不想花费太多时间在这个上面上。
nilai
2024-03-13 09:54:48 +08:00
@Jisxu 感谢, 这个项目不错,比我写的这个轮子不知道要高明到哪里去了, 这个我看了一下,稍要学习一下怎么用,目前我下载了测试了一下, 发现 (not connected)=> my://root:123456@192.168.0.100:4000/test 一直停留在这里,感觉没有连接上一样,状态一直是 not connected ,数据库的连接信息确认是对的, 可能需要一点点学习成本,我有空研究一下
GTim
2024-03-13 10:04:38 +08:00
不错,我用着,我也想打包一个命令行,随时可以使用的那种

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

https://yangjunhui.monster/t/1023069

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

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

© 2021 V2EX