一、为什么要在 Windows 上跑数据库
生产用 Linux——但学习 / 调试 / 离线场景,Windows 本地数据库仍是开发机标配:
- MySQL 8 / Redis 5 —— 本地调试 / 单元测试 / 学习
- Elasticsearch 8 —— 全文搜索 / 日志分析
- SQLite —— 嵌入式场景(Python 内置 sqlite3 模块)
- Navicat —— 跨数据库 GUI,连接本机 + 远程
本文避开 Docker(Windows Docker Desktop 重,本地跑裸进程更快),全部用 ZIP / MSI 解压即装的方式。
二、MySQL 8.0 安装
2.1 下载 MySQL Installer
- 官方:https://downloads.mysql.com/archives/installer/
- 推荐版本:MySQL Installer Community 8.0.28.0(2022 时代经典)
MySQL Installer 是 .msi,含 Server + Workbench + Shell + Connector/NET 一站式安装。
2.2 静默安装(推荐)
1
2
3
4
5
| # 企业版
msiexec /i mysql-installer-community-8.0.28.0.msi /qn
# 自定义安装路径
msiexec /i mysql-installer-community-8.0.28.0.msi INSTALLDIR="D:\soft\MySQL" /qn
|
2.3 配置 my.ini
1
2
3
4
5
6
7
8
9
10
| [mysqld]
basedir=D:/soft/MySQL
datadir=D:/data/MySQL
port=3306
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-authentication-plugin=mysql_native_password
[client]
default-character-set=utf8mb4
|
2.4 初始化数据目录
1
2
| cd D:\soft\MySQL\bin
mysqld --initialize-insecure --user=mysql
|
--initialize-insecure:root 密码为空(开发机推荐),生产用 --initialize 会生成随机密码到 data\xxx.err。
2.5 启动 MySQL
1
2
3
4
5
6
| # 命令行启动
D:\soft\MySQL\bin\mysqld --console
# 注册成 Windows 服务
D:\soft\MySQL\bin\mysqld --install MySQL8 --defaults-file="D:\soft\MySQL\my.ini"
net start MySQL8
|
2.6 修改 root 密码
1
2
| ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';
FLUSH PRIVILEGES;
|
三、Redis 5.0 安装
3.1 下载
- tporadowski/redis 维护的 Windows 版 Redis(官方 Windows 版停更)
- 5.0.14.1:https://github.com/tporadowski/redis/releases/download/v5.0.14.1/Redis-x64-5.0.14.1.zip
- 6.x / 7.x 也都有,2018-2023 持续维护
3.2 解压即用
1
2
3
| # 解压到 D:\portable\Redis-x64-5.0.14.1
cd D:\portable\Redis-x64-5.0.14.1
redis-server.exe redis.windows.conf
|
3.3 客户端连接
1
2
3
4
5
6
7
| # 默认 6379 端口
redis-cli.exe -h 127.0.0.1 -p 6379
# 测试
> set myKey abc
> get myKey
"abc"
|
3.4 注册成 Windows 服务
1
2
3
4
5
6
7
8
9
10
11
| # 安装服务
redis-server.exe --service-install redis.windows.conf --loglevel verbose
# 启动服务
redis-server.exe --service-start
# 停止服务
redis-server.exe --service-stop
# 卸载服务
redis-server.exe --service-uninstall
|
3.5 配置密码
redis.windows.conf:
1
| requirepass your_redis_password
|
客户端:
1
| redis-cli -a your_redis_password
|
注意:Redis 6+ 才支持 ACL(多用户多权限),5.0 仍是单密码模式。
四、Elasticsearch 8.x 安装
4.1 下载
- 官方:https://www.elastic.co/cn/downloads/elasticsearch
- 8.2.2 Windows 版:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.2.2-windows-x86_64.zip
- 历史版本:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
4.2 解压
1
2
| # 推荐解压到 D 盘
Expand-Archive elasticsearch-8.2.2-windows-x86_64.zip -DestinationPath D:\portable\
|
4.3 启动 ES
D:\portable\elasticsearch-8.2.2\config\elasticsearch.yml 末尾加:
1
| xpack.ml.enabled: false
|
关掉 X-Pack ML,避免内存溢出(默认开启会占 1G+ 内存)。
启动:
1
| D:\portable\elasticsearch-8.2.2\bin\elasticsearch.bat
|
第一次启动输出:
1
2
3
4
5
6
7
8
| -> Elasticsearch security features have been automatically configured!
-> Authentication is enabled and cluster connections are encrypted.
-> Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
SCzC_tXNopid7eKBVp0n
-> HTTP CA certificate SHA-256 fingerprint:
74bbe5528b8e1c66539cb8cc8aff1bb624970694e9e55578a7ecbbd6ac60fe1f
|
SCzC_tXNopid7eKBVp0n 就是 elastic 用户的初始密码——记下来!
4.4 改密码
1
| D:\portable\elasticsearch-8.2.2\bin\elasticsearch-reset-password -u elastic -i
|
4.5 访问
1
2
| # 默认 https://localhost:9200
curl -k -u elastic:your_password https://localhost:9200/
|
-k 是忽略 TLS 证书(ES 8 默认开启 TLS)。
4.6 Kibana 配套
- Kibana 8.2.2:https://artifacts.elastic.co/downloads/kibana/kibana-8.2.2-windows-x86_64.zip
- 解压到
D:\portable\kibana-8.2.2 - 启动
bin\kibana.bat - 访问
http://localhost:5601
五、SQLite 解压即用
5.1 下载
- 官方:https://www.sqlite.org/download.html
- 2022 版:sqlite-dll-win64-x64-3380500.zip + sqlite-tools-win32-x86-3380500.zip
5.2 部署
1
2
3
4
| # 解压到 D:\portable\sqlite3
md D:\portable\sqlite3
Expand-Archive sqlite-dll-win64-x64-3380500.zip -DestinationPath D:\portable\sqlite3
Expand-Archive sqlite-tools-win32-x86-3380500.zip -DestinationPath D:\portable\sqlite3
|
5.3 配置环境变量
1
| PATH += D:\portable\sqlite3
|
5.4 启动
输出:
1
2
3
4
5
| SQLite version 3.38.5 2022-05-06 15:25:27
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>
|
5.5 常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| -- 打开数据库文件
.open mydata.db
-- 列出所有表
.tables
-- 显示表结构
.schema users
-- 退出
.exit
-- .help 看所有元命令
.help
|
5.6 Python 内置
1
2
3
4
5
6
7
8
| import sqlite3
conn = sqlite3.connect('mydata.db')
cur = conn.cursor()
cur.execute('SELECT * FROM users LIMIT 5')
for row in cur.fetchall():
print(row)
conn.close()
|
六、Navicat 连接 SQL Server
6.1 安装 SQL Server Native Client 2012
Navicat 早期版本连接 SQL Server 需要 Microsoft® SQL Server® 2012 Native Client:
- 下载:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=50402
- Navicat 16+ 已经自带驱动
6.2 新建连接
1
2
3
4
5
6
7
8
9
10
11
| 1. 打开 Navicat
2. "连接" → 选 "SQL Server"
3. 主机: localhost / 192.168.x.x / <HOST>,1433
4. 验证: SQL Server 验证
5. 用户名: sa
6. 密码: ********
7. 数据库: 选 <默认> / 指定
8. 高级 → 排序规则: Chinese_PRC_CI_AS
9. 高级 → 恢复模式: SIMPLE
10. 高级 → 兼容级别: 100(SQL Server 2008 兼容)
11. 测试连接
|
6.3 关键参数说明
| 参数 | 含义 | 推荐值 |
|---|
| 排序规则 | 字符集 / 排序规则 | Chinese_PRC_CI_AS(中文不区分大小写) |
| 恢复模式 | FULL / SIMPLE / BULK_LOGGED | SIMPLE(开发机省空间) |
| 兼容级别 | 模拟老 SQL Server 版本 | 100(2008)/ 110(2012)/ 130(2016) |
| 加密 | 是否 TLS | Force Encryption = False(开发机省事) |
七、跨数据库 GUI 工具对比
| 工具 | 出品方 | 跨数据库 | 价格 | 推荐度 |
|---|
| Navicat Premium | 卓码(香港) | MySQL/MSSQL/Oracle/PostgreSQL/SQLite/MongoDB/Redis | 商业付费 | 老牌经典 |
| DBeaver Community | 社区 | 几乎所有数据库 | 免费开源 | 2020+ 主流 |
| DataGrip | JetBrains | 几乎所有数据库 | 商业付费 | IDE 体验 |
| HeidiSQL | 德国开发者 | MySQL/MSSQL/PostgreSQL | 免费开源 | MySQL 经典 |
| TablePlus | 独立开发者 | MySQL/PostgreSQL/SQLite/Redis/MongoDB | 商业付费(Mac/Win) | Mac 设计感 |
| Apifox | 国产 | API 设计 + Mock + 调试 + 文档 | 个人版免费 | 2020+ 新派 |
建议:
- 白嫖 → DBeaver Community
- 重度 MySQL → Navicat Premium
- IDE 用户 → DataGrip
- Mac 用户 → TablePlus
八、Windows 防火墙与端口
数据库本地跑没问题,但远程连接要开防火墙:
8.1 放行 MySQL 3306
1
| New-NetFirewallRule -DisplayName "MySQL 3306" -Direction Inbound -LocalPort 3306 -Protocol TCP -Action Allow
|
8.2 放行 Redis 6379
1
| New-NetFirewallRule -DisplayName "Redis 6379" -Direction Inbound -LocalPort 6379 -Protocol TCP -Action Allow
|
8.3 放行 Elasticsearch 9200
1
| New-NetFirewallRule -DisplayName "ES 9200" -Direction Inbound -LocalPort 9200 -Protocol TCP -Action Allow
|
生产环境:不要直接把数据库端口暴露公网——走 SSH 隧道或 VPN。
九、性能调优
9.1 MySQL
- 配置
innodb_buffer_pool_size = 物理内存的 50-70% - 启用慢查询日志:
slow_query_log = 1,long_query_time = 2 - 使用
EXPLAIN 分析慢 SQL
9.2 Redis
- 最大内存:
maxmemory 2gb - 淘汰策略:
maxmemory-policy allkeys-lru(通用 LRU) - 持久化:开发机关 RDB / AOF,生产开 AOF
9.3 Elasticsearch
Xms / Xmx JVM 堆内存:建议设成一样大- 堆内存 ≤ 物理内存的 50%(留 50% 给 OS 文件缓存)
- 避免大文档 + 避免深度分页
十、常见 5 个坑
- MySQL 8 默认
caching_sha2_password——老客户端连不上,改 mysql_native_password - Redis Windows 5.0 默认无密码——生产必设
requirepass - Elasticsearch 8 默认开 TLS + 强制密码——第一次启动会输出初始密码,记不住就
elasticsearch-reset-password - SQLite 数据库文件并发写会锁——多写场景不要用 SQLite
- Navicat 12 之前的版本连 SQL Server 2016+ 报错——升级到 Navicat 16+
十一、总结
- MySQL 8 ——
mysqld --initialize-insecure 初始化 + mysqld --install 注册服务 - Redis 5/6 —— tporadowski 维护版解压即用,生产必设密码
- Elasticsearch 8 —— 8.x 默认开 TLS,第一次启动的 elastic 密码要记
- SQLite —— Python 内置,开发机首选
- Navicat —— 跨数据库 GUI,经典老牌;白嫖首选 DBeaver
- 生产环境:数据库别直接暴露公网——走 SSH 隧道 / VPN
参考资料