Featured image of post Windows 数据库客户端实战:MySQL / Redis / SQLite / MQTTX / Elasticsearch

Windows 数据库客户端实战:MySQL / Redis / SQLite / MQTTX / Elasticsearch

Windows 平台数据库与消息客户端实战:MySQL 命令行、Redis 桌面工具、SQLite Browser、MQTTX、Elasticsearch + Kibana

一、2016 年数据库客户端格局

2016 年的数据库世界:MySQL 仍是事实 OLTP 之王Redis 已经是缓存标配SQLite 在移动端大杀四方MQTT 协议在 IoT 崛起Elasticsearch 2.x 到 5.x 跨大版本。本文整理 5 款数据库 / 消息客户端的实战用法。

阅读建议:本文面向全栈 / 后端开发者重点在工具选型 + 性能调优

二、MySQL 客户端

2.1 命令行

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# 连接
mysql -h <HOST> -P 3306 -u root -p<password> <DB>

# 常用命令
SHOW DATABASES;
USE mydb;
SHOW TABLES;
DESCRIBE users;
SELECT * FROM users LIMIT 10;

# 导出
mysqldump -h <HOST> -u root -p<password> mydb > backup.sql

# 导入
mysql -h <HOST> -u root -p<password> mydb < backup.sql

# 执行 SQL 文件
mysql -h <HOST> -u root -p<password> mydb < init.sql

2.2 GUI 工具对比

工具优势价格
Navicat多数据库 / 完整商业付费
DBeaver免费开源 / 多数据库开源(EE 收费
MySQL Workbench官方 / 建模免费
HeidiSQL轻量免费
phpMyAdminWeb免费
DataGripJetBrains / 最强商业付费
Sequel AceMac 开源免费

2.3 MySQL 8.0 新特性

  • 窗口函数ROW_NUMBER() OVER
  • CTE 公共表表达式WITH 子句)
  • JSON 增强JSON_TABLE
  • 降序索引
  • caching_sha2_password默认鉴权插件

2.4 性能调优

慢查询日志

1
2
3
4
5
# /etc/my.cnf
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
log_queries_not_using_indexes = 1

索引优化

1
2
3
4
5
6
7
-- 查看执行计划
EXPLAIN SELECT * FROM users WHERE email = 'foo@bar.com';

-- 关键字段:type, key, rows, Extra
-- type = ALL: 全表扫描
-- type = ref: 索引扫描
-- type = const: 主键/唯一索引等值

连接数

1
2
3
4
5
-- 当前连接
SHOW STATUS LIKE 'Threads_connected';

-- 最大连接
SHOW VARIABLES LIKE 'max_connections';

三、Redis 客户端

3.1 命令行

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 连接
redis-cli -h <HOST> -p 6379 -a <password>

# 常用命令
SET user:1 "alice"
GET user:1
DEL user:1
EXISTS user:1
EXPIRE user:1 3600

# 哈希
HSET user:1 name "alice" age 30
HGETALL user:1

# 列表
LPUSH queue:msg "msg1"
RPOP queue:msg

# 集合
SADD tags "java" "redis"
SMEMBERS tags

# 有序集合
ZADD rank 100 "alice" 95 "bob"
ZRANGE rank 0 -1 WITHSCORES

# 管道
echo "PING\nSET k v\nGET k" | redis-cli

3.2 GUI 工具对比

工具平台价格
Redis Desktop Manager (RDM)跨平台现改名 RESP.app / 商业
MedisMac开源
Another Redis Desktop Manager跨平台开源免费
RedisInsight跨平台官方 / 免费
FastoRedis跨平台开源 / 商业
Tiny RDM新兴国产 / 开源

3.3 实战:String 缓存

1
2
3
4
5
6
7
8
# 设置 5 分钟过期
SET session:user:1001 "<json>" EX 300

# 获取
GET session:user:1001

# 原子递增
INCR counter:views:article:123

3.4 实战:List 消息队列

1
2
3
4
5
# 生产者
LPUSH queue:email "{\"to\":\"a@x.com\",\"subject\":\"hi\"}"

# 消费者
BRPOP queue:email 0  # 阻塞 0 秒直到有数据

3.5 性能监控

1
2
3
4
5
6
7
8
9
# 实时命令
redis-cli MONITOR

# 慢查询
redis-cli SLOWLOG GET 10

# 内存分析
redis-cli MEMORY USAGE mykey
redis-cli INFO MEMORY

四、SQLite 客户端

4.1 命令行

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 打开 / 创建数据库
sqlite3 mydb.db

# 常用命令
.tables
.schema users
.headers on
.mode column
SELECT * FROM users LIMIT 10;

# 备份
sqlite3 mydb.db ".dump" > backup.sql

# 恢复
sqlite3 newdb.db < backup.sql

4.2 GUI 工具

工具平台价格
DB Browser for SQLite跨平台免费开源
SQLiteStudio跨平台免费
Navicat for SQLite跨平台商业
DBeaver跨平台开源(EE 收费

4.3 DB Browser for SQLite 实战

https://sqlitebrowser.org/

  1. 打开 .db 文件
  2. Browse Data → 看表数据
  3. Execute SQL → 写 SQL
  4. Database Structure → 改表结构
  5. Export → CSV / JSON / SQL

4.4 实战:移动端加密数据库

1
2
3
4
5
6
7
8
9
# Python + SQLite 加密
import sqlite3
from pysqlcipher3 import dbapi2 as sqlcipher

conn = sqlcipher.connect("encrypted.db")
conn.execute("PRAGMA key = 'my-secret-password'")
cursor = conn.cursor()
cursor.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)")
conn.commit()

实战

  • 密码管理器如 1Password / Bitwarden
  • 本地缓存Chrome 历史
  • 小工具数据如 RSS 阅读器

五、MQTTX 客户端

5.1 MQTT 协议背景

MQTT 1999 年由 IBM 发布,IoT 领域事实标准核心概念

  • Broker:消息代理(EMQX / Mosquitto
  • Client:发布 / 订阅
  • Topic:主题(层级 / 通配符
  • QoS
    • 0:最多一次
    • 1:至少一次
    • 2:恰好一次
  • Retain:保留消息

5.2 MQTTX 介绍

MQTTX 是 EMQX 团队开发的跨平台 MQTT 桌面客户端优势

  • 跨平台Win / Mac / Linux
  • 支持 MQTT 5.0
  • 多连接 / 多主题
  • 消息格式化( JSON / Hex**)**
  • 脚本化自动测试

5.3 安装与连接

https://mqttx.app/

  1. 新建连接
    • Hostbroker.emqx.io公共测试
    • Port1883TCP)/ 8883TLS
    • Client ID:随机生成
  2. 订阅:test/topic
  3. 发布:同主题发 {"hello": "world"}

5.4 实战:本地 Mosquitto 调试

1
2
3
4
5
6
7
8
# 启动 Mosquitto
mosquitto -p 1883

# 订阅
mosquitto_sub -h 127.0.0.1 -t "test/#" -v

# 发布
mosquitto_pub -h 127.0.0.1 -t "test/foo" -m "hello"

MQTTX 中

  • Host127.0.0.1
  • 订阅test/#
  • 发布test/foo + hello

5.5 实战:TLS / 证书

1
2
3
4
5
MQTTX 高级设置:
- CA File: ca.crt
- Client Cert: client.crt
- Client Key: client.key
- Verify: true

5.6 脚本化(自动化测试

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
// MQTTX 脚本:连接 + 订阅 + 验证
const mqtt = require('mqtt');
const client = mqtt.connect('mqtt://broker.emqx.io:1883');

client.on('connect', () => {
    client.subscribe('test/topic', (err) => {
        if (!err) {
            client.publish('test/topic', 'hello mqtt');
        }
    });
});

client.on('message', (topic, message) => {
    console.log(`收到: ${message.toString()}`);
    client.end();
});

六、Elasticsearch 客户端

6.1 协议背景

Elasticsearch 2010 年发布,基于 Lucene 的分布式搜索2016 年发布 5.0重大重构)。核心概念

  • Index:索引(类比 MySQL 数据库
  • Type5.x)/Document6.x 起弱化 Type):文档
  • Mapping:字段类型定义
  • Shard / Replica:分片 / 副本

6.2 HTTP API

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 创建索引
curl -X PUT "localhost:9200/my_index"

# 索引文档
curl -X PUT "localhost:9200/my_index/_doc/1" \
  -H "Content-Type: application/json" \
  -d '{"title": "Hello", "content": "World"}'

# 搜索
curl -X GET "localhost:9200/my_index/_search?q=hello"

# 复杂搜索(DSL)
curl -X GET "localhost:9200/my_index/_search" \
  -H "Content-Type: application/json" \
  -d '{
    "query": {
      "bool": {
        "must": [
          { "match": { "content": "hello" } },
          { "range": { "date": { "gte": "2020-01-01" } } }
        ]
      }
    }
  }'

6.3 GUI 工具

工具优势
Kibana官方 / 必备
ElasticHD国产 / 轻量
Elasticsearch Head老牌 / Chrome 插件
Dejavu跨平台 / 现代
Cerebro集群管理

6.4 Kibana Dev Tools

Kibana 装好后 → Dev Tools

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 索引文档
POST /my_index/_doc
{
  "title": "Hello",
  "content": "World",
  "date": "2024-01-01"
}

# 搜索
GET /my_index/_search
{
  "query": {
    "match": {
      "content": "hello"
    }
  }
}

6.5 实战:日志搜索

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 创建索引模板(自动 mapping)
PUT /_index_template/logs-template
{
  "index_patterns": ["logs-*"],
  "template": {
    "settings": {
      "number_of_shards": 1
    },
    "mappings": {
      "properties": {
        "@timestamp": { "type": "date" },
        "level": { "type": "keyword" },
        "message": { "type": "text" },
        "service": { "type": "keyword" }
      }
    }
  }
}

# 批量导入
POST /logs-2024.01/_bulk
{ "index": {} }
{ "@timestamp": "2024-01-01T10:00:00", "level": "INFO", "message": "started", "service": "api" }

6.6 性能调优

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 索引设置
index.number_of_shards: 3
index.number_of_replicas: 1
index.refresh_interval: 30s  # 默认 1s → 30s 减少 IO

# 字段类型优化
"message": {
  "type": "text",
  "fields": {
    "keyword": { "type": "keyword", "ignore_above": 256 }
  }
}

七、组合实战

7.1 全栈后端开发环境

1
2
3
4
5
代码:IntelliJ IDEA + VSCode
本地 DB:MySQL / Redis / SQLite
消息:EMQX + MQTTX
搜索:Elasticsearch + Kibana
工具:Navicat / DBeaver / Redis Desktop

7.2 IoT 设备监控

1
2
3
4
5
6
7
设备:MQTT Publish(sensor/data)
   ↓ EMQX Broker
MQTTX 订阅
   ↓ 规则引擎
InfluxDB 时序存储
   ↓ Grafana 看板
   ↓ 告警 → 钉钉

7.3 日志分析系统

1
2
3
4
5
应用 → Filebeat → Kafka
   ↓ Logstash
Elasticsearch
   ↓ Kibana
可视化 / 告警

八、常见问题

8.1 MySQL 8.0 caching_sha2_password 鉴权

旧客户端连接失败。解决

1
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '<PASSWORD>';

8.2 Redis 公网暴露被攻击

  • bind 127.0.0.1:只本地访问
  • requirepass:开密码
  • rename-command CONFIG “”:禁 CONFIG 命令
  • 防火墙规则

8.3 SQLite 锁库问题

SQLite 写操作会全库锁解决

  • WAL 模式PRAGMA journal_mode=WAL;读写并发
  • 超时设置PRAGMA busy_timeout=5000;
  • 多连接 + 短事务

8.4 MQTTX 连接失败

  • 端口1883TCP)/ 8883TLS
  • Client ID 冲突:自动生成
  • 认证:填 username / password
  • TLS 证书:自签名需要勾"允许自签名"

8.5 Elasticsearch 启动报错

  • JVM 堆不够:调 -Xms / -Xmx
  • root 用户:需要 -Ediscovery.type=single-node + 创建 elasticsearch 用户
  • max_map_countsysctl -w vm.max_map_count=262144

九、下一步

  • 想看消息队列:[2023-12-15 消息队列镜像实战:RabbitMQ / EMQX / ActiveMQ]
  • 想看监控告警:[2025-03-15 Prometheus 监控告警体系]
  • 想看时序数据库:[2023-09-15 时序数据库三剑客]

本文写于 2016 年,回看当时:MySQL 8.0 还未发布(2018-04);Redis 4.0 时代,模块系统才刚上;MQTT 5.0 还在草案2019 发布);Elasticsearch 5.0 重构了 Type 概念——10 年后 5 款工具仍是同类最强

使用 Hugo 构建
主题 StackJimmy 设计