在腾讯云轻量应用服务器(Lighthouse)上自行部署数据库服务,通常指使用操作系统自带的包管理器安装开源数据库(如 MySQL、PostgreSQL、Redis 等),并手动配置安全策略与备份机制。以下是通用部署流程(以 MySQL 8.0 为例,其他数据库逻辑类似):
✅ 一、前置准备
-
购买轻量应用服务器
- 选择合适配置(建议 ≥2GB 内存 + 2核 CPU,根据业务负载调整)
- 操作系统推荐:Ubuntu 22.04 LTS 或 CentOS 7/8(文档以 Ubuntu 为例)
- 地域建议选择靠近用户或自建环境的区域(降低延迟)
-
安全组配置(关键!)
- 登录 腾讯云控制台 → 轻量应用服务器 → 实例 → 网络与安全 → 安全组
-
添加入站规则: 协议类型 端口范围 来源 IP 说明 TCP 3306 0.0.0.0/0(仅测试用)
✅ 生产环境建议限制为特定 IP允许远程连接(默认禁止公网访问) ⚠️ 强烈建议:将
0.0.0.0/0改为你的办公 IP 或应用服务器内网 IP;或直接通过 内网通信(同地域多实例可走内网)。
✅ 二、安装 MySQL(Ubuntu 示例)
# 1. 更新系统 & 安装依赖
sudo apt update && sudo apt upgrade -y
sudo apt install wget gnupg ca-certificates -y
# 2. 添加 MySQL APT 源(官方推荐方式)
wget https://dev.mysql.com/get/mysql-apt-config_0.8.30-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.30-1_all.deb
# 弹出交互界面时:选择 MySQL Server → MySQL 8.0 → 确认
# 3. 安装 MySQL Server
sudo apt update
sudo apt install mysql-server -y
# 4. 启动并设置开机自启
sudo systemctl start mysql
sudo systemctl enable mysql
# 5. 初始安全加固(交互式执行)
sudo mysql_secure_installation
# 按提示操作:
# ✓ Set root password? (是)
# ✓ Remove anonymous users? (是)
# ✓ Disallow root login remotely? (否 → 后续需手动开放权限)
# ✓ Remove test database? (是)
# ✓ Reload privilege tables? (是)
✅ 三、配置远程访问(谨慎操作)
方法 A:创建专用用户(推荐)
-- 登录 MySQL
sudo mysql -u root -p
-- 创建应用用户(替换 'your_password' 和 'app_db')
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
EXIT;
🔒 注意:
%表示允许任意 IP 连接;生产环境应替换为具体 IP(如'app_user'@'192.168.1.100')
方法 B:修改绑定地址(可选)
编辑 /etc/mysql/mysql.conf.d/mysqld.cnf:
[mysqld]
bind-address = 0.0.0.0 # 默认是 127.0.0.1,需改为 0.0.0.0 才允许外连
重启服务:
sudo systemctl restart mysql
✅ 四、防火墙与云防火墙补充
- 若系统开启
ufw(Ubuntu 默认):sudo ufw allow 3306/tcp from <你的IP>/32 sudo ufw reload - 腾讯云轻量版无独立云防火墙,但可通过安全组控制;若需更细粒度防护,建议搭配 CCD(云防火墙) 或自建主机防火墙(如
iptables/firewalld)。
✅ 五、备份与监控(重要!)
自动备份脚本示例(/usr/local/bin/mysql-backup.sh):
#!/bin/bash
BACKUP_DIR="/backup/mysql"
DATE=$(date +%F_%H%M%S)
DB_NAME="app_db"
MYSQL_USER="root"
MYSQL_PASS="your_root_password"
mkdir -p $BACKUP_DIR
mysqldump -u$MYSQL_USER -p$MYSQL_PASS $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_$DATE.sql.gz
# 保留最近7天备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
echo "Backup completed: ${DB_NAME}_$DATE.sql.gz"
赋予执行权限并加入 crontab:
chmod +x /usr/local/bin/mysql-backup.sh
crontab -e
# 每天凌晨 2 点执行
0 2 * * * /usr/local/bin/mysql-backup.sh
监控建议:
- 使用
htop/mysqladmin status实时查看状态 - 部署 Prometheus + Grafana(轻量机资源有限时可简化为日志轮转 + 告警邮件)
⚠️ 注意事项
| 风险项 | 建议方案 |
|---|---|
| 数据丢失 | 定期备份 + 开启 binlog(expire_logs_days=7)+ 考虑跨可用区快照 |
| 性能瓶颈 | 监控 show processlist, slow query log;调整 innodb_buffer_pool_size(建议设为物理内存 50~70%) |
| 安全漏洞 | 关闭 root 远程登录;禁用空密码;定期更新 MySQL;启用 SSL 加密连接 |
| 成本失控 | 避免长期高负载运行;利用腾讯云 定时启停 功能节省夜间费用 |
🔄 替代方案参考
若希望降低运维复杂度,也可考虑:
- 使用腾讯云 云数据库 MySQL/TencentDB for MySQL(托管服务,含自动备份/主备切换/监控)
- 使用轻量应用服务器 镜像市场 中的“一键部署”模板(如 LAMP/LNMP + MySQL)
需要我提供 PostgreSQL / Redis / MongoDB 的部署步骤,或生成完整的自动化部署脚本(Ansible/Bash),欢迎告诉我具体需求!
CLOUD云计算