VPS安装数据库全攻略从零开始搭建高性能数据存储环境
卡尔云官网
www.kaeryun.com
作为网络安全从业者,我经常需要在不同VPS上部署数据库。今天就用最直白的语言,手把手教你如何在VPS上安装主流数据库(MySQL、PostgreSQL、MongoDB),并分享几个安全加固的独门技巧。
一、VPS安装数据库前的准备工作
1.1 选择合适的VPS配置
数据库对硬件资源敏感,建议:
- 小型网站/个人项目:1核CPU + 2GB内存 + 20GB SSD(月费5-10美元)
- 中型应用:2核CPU + 4GB内存 + 50GB SSD(推荐DigitalOcean/Linode)
- 生产环境:至少4核CPU + 8GB内存 + RAID磁盘阵列
> 真实案例:我曾帮一个客户将WordPress从共享主机迁移到VPS,仅升级到2GB内存的VPS,页面加载速度就从3秒降到0.8秒。
1.2 系统环境优化
```bash
Ubuntu/Debian系统更新
sudo apt update && sudo apt upgrade -y
关闭不必要的服务(比如exim4邮件服务)
sudo systemctl stop exim4
sudo systemctl disable exim4
修改SSH默认端口(安全加固)
sudo sed -i 's/
Port 22/Port 56789/' /etc/ssh/sshd_config
sudo systemctl restart sshd
```
二、MySQL安装与安全配置
2.1 安装MySQL 8.0
Ubuntu系统
sudo apt install mysql-server -y
CentOS系统
sudo yum install mysql-server -y
sudo systemctl start mysqld
2.2 初始安全设置
运行安全脚本:
sudo mysql_secure_installation
会提示你:
1. 设置root密码(建议16位以上包含特殊字符)
2. 删除匿名用户
3. 禁止root远程登录 ← 这步特别重要!
4. 删除测试数据库
2.3 创建专用数据库用户
永远不要用root操作数据库!
```sql
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPass123!@
';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
三、PostgreSQL实战安装
3.1 Ubuntu安装PostgreSQL 14
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
sudo apt install postgresql postgresql-contrib -y
3.2 PostgreSQL安全要点
修改默认监听地址(禁止公网访问)
sudo nano /etc/postgresql/14/main/postgresql.conf
找到listen_addresses改为:
listen_addresses = 'localhost'
配置客户端认证
sudo nano /etc/postgresql/14/main/pg_hba.conf
IPv4本地连接改为md5认证:
host all all 127.0.0.1/32 md5
sudo systemctl restart postgresql
四、MongoDB非关系型数据库部署
4.1 Ubuntu安装MongoDB社区版
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt install mongodb-org -y
Journaling日志配置(防止数据损坏)
sudo nano /etc/mongod.conf
storage:
journal:
enabled: true
MongoDB安全三板斧:
1️⃣ 启用访问控制:
```javascript
use admin
db.createUser({
user: "admin",
pwd: "SuperSecretPWD2023",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
2️⃣ 绑定内网IP:
```yaml
net:
bindIp: localhost,192.168.1.100
只允许本地和指定内网IP访问
3️⃣ 开启TLS加密(生产环境必做):
openssl req -newkey rsa:2048 -nodes -keyout mongodb.key -x509 -days365 -out mongodb.crt
cat mongodb.key mongodb.crt > mongodb.pem
chmod600 mongodb.pem
五、数据库安全加固通用法则
5.1防火墙规则示例(UFW)
```bash
sudo ufw allow56789/tcp
SSH自定义端口
sudo ufw allow80,443/tcp
Web服务
sudo ufw enable
MySQL只允许特定IP访问
sudo ufw allow from192.168.1.100to any port3306 proto tcp
5.2定期备份方案(以MySQL为例)
!/bin/bash
mysqldump-u app_user-p'password'--all-databases | gzip > /backups/mysql_$(date +%Y%m%d).sql.gz
保留最近7天备份
find /backups/-name"mysql_*.sql.gz"-mtime+7-execrm{}\;
> 血泪教训:去年有个客户没做备份,VPS被黑后数据全丢,最后花了3万找数据恢复公司只找回70%数据。
六、性能调优小贴士
✅ MySQL缓冲池设置(占用70%可用内存):
```ini
[mysqld]
innodb_buffer_pool_size=1536M
对于2GB内存的VPS
```
✅ PostgreSQL工作内存优化:
```sql
ALTER SYSTEM SET work_mem='16MB';
每个查询操作的内存
ALTER SYSTEM SET shared_buffers='512MB';
总共享内存
✅ MongoDB WiredTiger缓存:
```yaml storage:
wiredTiger:
engineConfig:
cacheSizeGB:1
对于4GB内存的VPS分配1GB给MongoDB
```
七、常见问题排查
❓ 连接数爆满怎么办?
查看当前连接:`mysqladmin processlist`或`db.currentOp()`(MongoDB)
临时解决方案:`kill [进程ID]`
❓ 数据库突然变慢?
检查慢查询日志:
MySQL:`slow_query_log=ON`
PostgreSQL:`log_min_duration_statement=5000`(记录超过5秒的查询)
❓ 忘记root密码?
MySQL救援模式:
mysqld_safe --skip-grant-tables & mysql-u root
UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root';
---
按照这个指南操作,你的VPS数据库就能既安全又高效。如果遇到具体问题,欢迎在评论区留言交流!(记得隐藏你的真实IP和密码哦)
TAG:vps 安装数据库,vps安装应用软件,vps安装教程,vps搭建下载服务器卡尔云官网
www.kaeryun.com