在京东云轻量服务器(JD Cloud Lightweight Server)上部署 MySQL 或 Redis 等数据库,需注意:京东云轻量服务器本质是精简版的云主机(基于 KVM),不提供内置数据库服务(如阿里云RDS、腾讯云CVM+数据库托管),因此需手动安装和配置开源数据库软件。以下是详细、安全、生产可用的部署指南:
✅ 一、前提准备
-
已购买并启动京东云轻量服务器
- 推荐配置:MySQL/Redis 建议 ≥2核4GB内存 + SSD云盘(数据库对I/O敏感)
- 操作系统:推荐 Ubuntu 22.04 LTS 或 CentOS 7/8(注意 CentOS 8 已停更,建议用 Rocky Linux 8/9 或 Alibaba Cloud Linux 3)
-
基础环境配置
# 更新系统(Ubuntu) sudo apt update && sudo apt upgrade -y # 或 CentOS/Rocky Linux sudo dnf update -y # Rocky 8/9 / CentOS 8+ # sudo yum update -y # CentOS 7 # 安装常用工具 sudo apt install -y curl wget vim net-tools gnupg lsb-release # Ubuntu sudo dnf install -y curl wget vim net-tools # Rocky/CentOS -
开放安全组端口(京东云控制台操作)
- 进入【轻量服务器】→ 选择实例 → 【安全组】→ 编辑规则
- 添加入方向规则:
- MySQL:
TCP 3306(仅允许信任IP,严禁0.0.0.0/0 开放!) - Redis:
TCP 6379(同理,限制来源IP;若仅本地应用使用,可绑定127.0.0.1并关闭远程访问) - SSH:
TCP 22(建议改非默认端口并启用密钥登录)
- MySQL:
✅ 二、部署 MySQL(推荐 MySQL 8.0+)
方式1:APT/YUM 官方源安装(推荐,安全稳定)
# Ubuntu 22.04(官方源含 MySQL 8.0)
sudo apt install -y mysql-server
sudo systemctl enable mysql
sudo systemctl start mysql
# 运行安全初始化(设置root密码、禁用匿名用户等)
sudo mysql_secure_installation
方式2:下载 MySQL 官方 APT 包(获取最新版)
# 下载 MySQL APT 配置包(以 8.3 为例)
wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb # 选择 MySQL 8.3 → OK
sudo apt update
sudo apt install -y mysql-server
关键配置(/etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/my.cnf)
[mysqld]
bind-address = 0.0.0.0 # 如需远程访问(务必配合安全组/IP白名单!)
# bind-address = 127.0.0.1 # 仅本地访问(更安全,推荐)
port = 3306
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
innodb_buffer_pool_size = 1G # 根据内存调整(建议50%-70%物理内存)
max_connections = 200
log-error = /var/log/mysql/error.log
sudo systemctl restart mysql
创建普通用户(禁止 root 远程登录)
mysql -u root -p
> CREATE USER 'appuser'@'%' IDENTIFIED BY 'StrongPass123!';
> GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO 'appuser'@'%';
> FLUSH PRIVILEGES;
⚠️ 安全提示:
- 生产环境禁用 root 远程登录(
'root'@'%')- 使用强密码 + 定期轮换
- 启用 MySQL 的
validate_password插件强制密码策略
✅ 三、部署 Redis(推荐 Redis 7.x)
方式1:源码编译安装(推荐,版本新、可控性强)
# 安装依赖
sudo apt install -y build-essential tcl-dev pkg-config # Ubuntu
# sudo dnf groupinstall "Development Tools" && sudo dnf install -y tcl-devel # Rocky/CentOS
# 下载并编译 Redis 7.2(以最新稳定版为准)
cd /tmp
curl -O https://download.redis.io/releases/redis-7.2.5.tar.gz
tar xzf redis-7.2.5.tar.gz
cd redis-7.2.5
make && sudo make install
# 创建配置目录和用户
sudo useradd --system --group redis --no-create-home --shell /usr/sbin/nologin redis
sudo mkdir -p /var/lib/redis /etc/redis
sudo cp redis.conf /etc/redis/
sudo chown -R redis:redis /var/lib/redis /etc/redis
sudo chmod 770 /var/lib/redis
配置 /etc/redis/redis.conf
bind 127.0.0.1 ::1 # 仅本地访问(最安全);如需远程,改为 bind 0.0.0.0 并严格限制安全组
protected-mode yes # 必须开启(防未授权访问)
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no # systemd 管理用 no,由服务文件控制后台
supervised systemd
pidfile /var/run/redis/redis-server.pid
loglevel notice
logfile /var/log/redis/redis-server.log
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /var/lib/redis
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
requirepass YourStrongRedisPass! # 🔑 必须设置密码!
maxmemory 1gb # 根据内存设置,避免OOM
maxmemory-policy allkeys-lru
appendonly no # 如需持久化,改为 yes 并设 appendfilename
创建 systemd 服务文件 /etc/systemd/system/redis-server.service
[Unit]
Description=Advanced key-value store
After=network.target
[Service]
Type=notify
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown
Restart=always
RestartSec=10
LimitNOFILE=65535
NoNewPrivileges=yes
[Install]
WantedBy=multi-user.target
启动并启用
sudo systemctl daemon-reload
sudo systemctl enable redis-server
sudo systemctl start redis-server
sudo systemctl status redis-server
# 测试连接(本机)
redis-cli -a "YourStrongRedisPass!" ping # 应返回 PONG
✅ 验证安全:
# 检查是否监听公网(应只显示 127.0.0.1) ss -tlnp | grep :6379 # 检查密码保护 redis-cli INFO | grep requirepass # 应为 yes
✅ 四、其他重要建议(生产必备)
| 类别 | 推荐操作 |
|---|---|
| 备份 | MySQL:每日 mysqldump + cron + 上传至京东云对象存储(JSB)Redis:启用 AOF 或定期 BGSAVE + RDB 备份 |
| 监控 | 安装 Prometheus + Grafana + mysqld_exporter / redis_exporter |
| 日志管理 | 配置 logrotate 防止日志占满磁盘 |
| 防火墙 | 启用 ufw(Ubuntu)或 firewalld(Rocky),双重防护 |
| 自动更新 | 关闭自动更新(避免意外升级破坏兼容性),改为人工验证后升级 |
| SSL/TLS | MySQL:配置 require_secure_transport=ON + SSL证书Redis:通过 stunnel 或(如 nginx)实现 TLS |
❌ 不推荐的做法(避坑)
- 直接使用
docker run -d -p 3306:3306 mysql(轻量服务器资源有限,Docker 增加开销且数据持久化易出错) - 使用 root 用户运行数据库进程(权限过大,安全风险高)
- 将数据库暴露到公网且无密码/无 IP 限制(高危!极易被勒索或)
- 忽略
max_connections、innodb_buffer_pool_size等关键参数导致性能崩溃
✅ 附:一键脚本(Ubuntu 示例,谨慎使用前审查)
# 保存为 setup-db.sh,运行前修改密码和配置
#!/bin/bash
MYSQL_PASS="MySecureMysqlPass123!"
REDIS_PASS="MySecureRedisPass456!"
# Install MySQL
sudo apt install -y mysql-server
sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$MYSQL_PASS';"
sudo mysql -e "CREATE USER 'app'@'localhost' IDENTIFIED BY '$MYSQL_PASS'; GRANT ALL ON *.* TO 'app'@'localhost'; FLUSH PRIVILEGES;"
# Install Redis from source (simplified)
cd /tmp && wget https://download.redis.io/releases/redis-7.2.5.tar.gz && tar xzf redis-7.2.5.tar.gz && cd redis-7.2.5 && make && sudo make install
echo "requirepass $REDIS_PASS" | sudo tee -a /etc/redis/redis.conf
# ...(后续配置略,建议分步执行)
如需我为你生成:
- ✅ 完整的
redis.service文件(适配 CentOS/Rocky) - ✅ MySQL 自动备份脚本(含 JSB 上传)
- ✅ Prometheus 监控配置模板
- ✅ 京东云安全组 JSON 规则导出
欢迎随时告知,我可以立即提供。
部署完成后,务必进行 连接测试 + 压力测试(如 sysbench) + 故障模拟(kill -9),确保高可用基础稳固。祝你部署顺利! 🚀
CLOUD技术笔记