京东云轻量服务器如何部署MySQL或Redis等数据库?

在京东云轻量服务器(JD Cloud Lightweight Server)上部署 MySQL 或 Redis 等数据库,需注意:京东云轻量服务器本质是精简版的云主机(基于 KVM),不提供内置数据库服务(如阿里云RDS、腾讯云CVM+数据库托管),因此需手动安装和配置开源数据库软件。以下是详细、安全、生产可用的部署指南:


✅ 一、前提准备

  1. 已购买并启动京东云轻量服务器

    • 推荐配置:MySQL/Redis 建议 ≥2核4GB内存 + SSD云盘(数据库对I/O敏感)
    • 操作系统:推荐 Ubuntu 22.04 LTSCentOS 7/8(注意 CentOS 8 已停更,建议用 Rocky Linux 8/9 或 Alibaba Cloud Linux 3)
  2. 基础环境配置

    # 更新系统(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
  3. 开放安全组端口(京东云控制台操作)

    • 进入【轻量服务器】→ 选择实例 → 【安全组】→ 编辑规则
    • 添加入方向规则:
      • MySQL:TCP 3306(仅允许信任IP,严禁0.0.0.0/0 开放!
      • Redis:TCP 6379(同理,限制来源IP;若仅本地应用使用,可绑定 127.0.0.1 并关闭远程访问)
      • SSH:TCP 22(建议改非默认端口并启用密钥登录)

✅ 二、部署 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_connectionsinnodb_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),确保高可用基础稳固。祝你部署顺利! 🚀