mysql

mysql 连接 MySQL 或 MariaDB,检查结构和行数据,执行定向修改、表导出、原生 SQL,并创建 SQL 转储。

数据库版本 1.1.3稳定别名: mariadb
lil-terminal

概览

mysql 同时服务 MySQL 和 MariaDB:密码不会进入命令历史,常用的结构和行操作都有短选项,: 后仍可直接执行原生 SQL。

表、行与原生 SQL

MySQL 与 MariaDB 都是客户端/服务器式关系数据库。可以按“数据库 行与列 索引与事务”来理解:表结构约束数据形状,SQL 面向的是行集合,而不是逐步修改文件。mysql 驱动同时服务 MySQL 与 MariaDB;需要引擎特有能力时,仍可在 : 后使用原生 SQL。

语法

lil-terminal
mysql [options] · mysql : <sql>

参考

mysql

显示当前 MySQL / MariaDB 连接

mysql -c <host> <user> [database] [-p <port>] [-s <socket>] [-charset <charset>] [-n] [-m [name]]

连接;除非使用 -n,否则密码会单独询问

-use <database>

选择其他数据库

-l

列出数据库

-t

列出表和视图

-s <table>

显示列和数据类型

-n <table> [rows]

预览表行

-f <table> <text> [rows]

在表的各列中查找文本

-o <table> [-j|-csv] [file] [-f]

导出表行

-a <table> : <json>

从 JSON 对象插入一行

-w <table> <field> <value> : <json>

用 JSON 对象更新匹配的行

-d <table> <field> <value>

删除匹配的行

-m [name]

把当前连接保存到 .lil.key;默认使用数据库名

-M <name>

删除已保存的连接

-k [name]

列出已保存的连接,或检查其中一个但不显示密码

-K <name>

使用已保存的连接进行连接

-e

断开连接并清除连接信息

mysql : <sql>

执行原生 SQL

mysql load <file.sql>

执行文件中的 SQL

mysql dump [file.sql] [-f]

创建结构和数据转储

mariadb [options]

@mysql 的别名

工作方式

常用形式都列在本地命令参考中。快捷操作负责检查和小范围修改;高级操作始终可以回到对应数据库的原生语法。

备份与恢复

dump/load 的格式由驱动决定。若需要覆盖数据库全部能力的完整备份,请使用服务器侧的原生备份工具。

安全

密码通过隐藏输入框提供,不会写入命令历史。生产环境应尽量使用权限受限的数据库账户。

-charset 用于选择连接字符集。表超过 100000 行时会拒绝导出,而不是静默写入不完整文件。

已保存的连接

未使用 -m 时,连接数据只保留在当前 PHP 会话中。-m [name] 会明确把配置保存到受保护的 .lil.key 文件(0600),-K <name> 使用它重新连接,-k 可列出或检查配置但不会泄露已保存的密码,-M <name> 删除一个配置。kill 会与其他核心状态一起删除 .lil.key。请把该文件视为敏感文件,因为主动保存的配置可能包含数据库凭据。

交互式 sandbox 预览

可直接在页面中运行预先准备的示例。结果已预先生成并在浏览器中显示;服务器不会执行任何终端命令。

检查 MySQL / MariaDB 表

安装与管理

安装当前兼容版本。完整功能请选择 Base,精简包请选择 Minimum;已安装模块的更新请使用 upgrade。

Base 与 Minimum 是同一当前模块版本的两个包。

Base 包

安装包含本地参考和全部已发布模式的完整包。

install mysql
Minimum 包

安装精简包。该包不包含本地参考;help <cmd> -i 会打开当前服务器参考。

install mysql -m
精确公开版本

安装这个确切的已发布版本。

install mysql -v 1.1.3
检查或升级

让 upgrade 检查兼容性,仅在需要时替换已安装块。

upgrade mysql
删除模块

删除扩展块,不影响核心和其他模块。

install mysql -u

示例

示例可复制,但网站不会执行。请先检查路径、权限和破坏性选项。

检查 MySQL / MariaDB 表
mysql -use shop | mysql -t | mysql -n products 5
Database  shop

products
orders

id	sku	name	category	price	active
1	SHOE-1	City shoe	shoes	79.90	1
2	SHOE-2	Trail shoe	shoes	109.00	1
3	BAG-1	Canvas bag	bags	44.50	1
Mysql · localhost
mysql -c localhost app shop
Status    connected
Server    MySQL / MariaDB
Host      localhost:3306
User      app
Database  shop
Charset   utf8mb4
Mysql · -l
mysql -l
information_schema
shop
Mysql · products
mysql -s products
Field     Type          Null  Key
id        bigint        NO    PRI
sku       varchar(64)   NO    UNI
name      varchar(180)  NO
category  varchar(80)   NO
price     decimal(10,2) NO
active    tinyint(1)    NO
Mysql · products
mysql -f products "shoe" 20
id	sku	name	category	price
1	SHOE-1	City shoe	shoes	79.90
2	SHOE-2	Trail shoe	shoes	109.00
Mysql · products
mysql -o products -j products.json
Saved  products.json
Mysql · products
mysql -a products : {"sku":"BAG-1","name":"Travel bag","price":49.90}
Inserted  1
Mysql · products
mysql -w products sku BAG-1 : {"price":44.90}
Updated  1
Mysql · products
mysql -d products sku BAG-1
Deleted  1
Mysql · select
mysql : SELECT COUNT(*) AS products FROM products
products
4
Mysql · dump
mysql dump shop.sql
Saved   shop.sql
Tables  2
Views   0
Mysql · load
mysql load \sandbox\db\mysql.sql
Affected  1
Affected  0
Affected  0
Affected  2
Time      2 ms
Mysql · -e
mysql -e
+
处理不存在的表
mysql -s missing_table
未找到表: missing_table

本示例使用的文件: sandbox/db/mysql.sql

该示例使用受保护的 /sandbox/ 文档工作区中的文件或目录。

CREATE DATABASE IF NOT EXISTS shop CHARACTER SET utf8mb4;
USE shop;
CREATE TABLE products (id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, sku VARCHAR(64) UNIQUE NOT NULL, name VARCHAR(180) NOT NULL, category VARCHAR(80) NOT NULL, price DECIMAL(10,2) NOT NULL, active TINYINT(1) NOT NULL DEFAULT 1);
INSERT INTO products(sku,name,category,price,active) VALUES ('SHOE-1','City shoe','shoes',79.90,1),('BAG-1','Canvas bag','bags',44.50,1);

相关文档

当前公开版本

v1.1.32026-08-14

已保存的连接

.lil.key 中增加显式的 -m/-M/-k/-K 配置;列表永远不会显示已保存的密码。