VPS安装数据库教程2026:MySQL/PostgreSQL部署指南
前言
数据库是任何网站和应用的核心存储层。在VPS服务器上正确安装和配置数据库,不仅关系到数据的安全性,更直接影响网站的访问速度和稳定性。
2026年的云服务器环境中,MySQL和PostgreSQL仍是最流行的两款开源数据库。MySQL以其简单易用著称,而PostgreSQL则以功能强大著称。选择哪款数据库,需要根据您的具体需求来决定。
本文将详细介绍在VPS上安装、配置和保护MySQL/PostgreSQL数据库的完整流程,并提供性能优化的实用建议。无论您是部署WordPress博客还是开发复杂的Web应用,都能从中获得有价值的参考。
一、数据库选型与环境准备
1.1 MySQL vs PostgreSQL:如何选择
在选择数据库之前,需要了解两者的核心差异:
| 特性 | MySQL | PostgreSQL |
|---|---|---|
| 类型 | 关系型数据库(RDBMS) | 关系型+对象数据库(ORDBMS) |
| 许可证 | GPL开源 | PostgreSQL许可证 |
| 事务支持 | ACID兼容 | 完整ACID支持 |
| 扩展性 | 主从复制 | 原生支持并行查询 |
| JSON支持 | 5.7+版本支持 | 原生JSON支持 |
| 适合场景 | Web应用、电商网站 | 数据分析、GIS应用 |
选型建议:
- WordPress/MySQL表单项CMS → 选择MySQL
- 复杂查询/数据分析 → 选择PostgreSQL
- 需要地理空间数据 → 选择PostgreSQL(PostGIS)
- 团队熟悉MySQL语法 → 选择MySQL
1.2 系统要求与准备
在安装数据库前,确保VPS满足以下基本要求:
最低配置建议:
- 内存:至少2GB(生产环境建议4GB以上)
- CPU:2核以上
- 磁盘:至少20GB SSD存储(数据库强烈建议使用SSD)
系统准备步骤:
# 更新系统包
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
# CentOS/RHEL
sudo yum update -y
# 创建数据库专用用户(可选,用于安全隔离)
sudo useradd -r -s /sbin/nologin mysql
sudo useradd -r -s /sbin/nologin postgres
二、MySQL安装与配置
2.1 Ubuntu/Debian系统安装MySQL
# 安装MySQL服务器
sudo apt install mysql-server -y
# 启动MySQL服务
sudo systemctl start mysql
sudo systemctl enable mysql
# 检查MySQL状态
sudo systemctl status mysql
2.2 CentOS/RHEL系统安装MySQL
# 添加MySQL YUM仓库
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm -y
# 安装MySQL服务器
sudo yum install mysql-community-server -y
# 启动MySQL服务
sudo systemctl start mysqld
sudo systemctl enable mysqld
2.3 安全加固与初始配置
首次安装MySQL后,务必进行安全加固:
# 运行安全安装向导
sudo mysql_secure_installation
# 按照提示完成以下设置:
# 1. 设置root密码(使用强密码)
# 2. 移除匿名用户
# 3. 禁止root远程登录
# 4. 移除测试数据库
# 5. 刷新权限
修改root密码策略(如需要):
-- 查看当前密码策略
SHOW VARIABLES LIKE 'validate_password%';
-- 修改密码策略为中等
SET GLOBAL validate_password.policy=MEDIUM;
-- 修改密码长度要求
SET GLOBAL validate_password.length=8;
-- 重置root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword!';
2.4 创建数据库和用户
-- 登录MySQL
mysql -u root -p
-- 创建数据库
CREATE DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建用户并授权
CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'YourPassword!';
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出
EXIT;
三、PostgreSQL安装与配置
3.1 Ubuntu/Debian系统安装PostgreSQL
# 安装PostgreSQL服务器
sudo apt install postgresql postgresql-contrib -y
# 启动PostgreSQL服务
sudo systemctl start postgresql
sudo systemctl enable postgresql
# 检查状态
sudo systemctl status postgresql
3.2 CentOS/RHEL系统安装PostgreSQL
# 添加PostgreSQL仓库
sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm -y
# 安装PostgreSQL服务器
sudo yum install postgresql14-server -y
# 初始化数据库
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
# 启动服务
sudo systemctl start postgresql-14
sudo systemctl enable postgresql-14
3.3 PostgreSQL安全配置
# 切换到postgres用户
sudo -u postgres psql
-- 设置postgres用户密码
\password postgres
-- 创建新用户和数据库
CREATE USER your_username WITH PASSWORD 'YourPassword!';
CREATE DATABASE your_database_name OWNER your_username;
-- 退出
\q
3.4 配置远程连接(如需要)
# 编辑PostgreSQL配置文件
sudo nano /etc/postgresql/14/main/postgresql.conf
# 修改监听地址(找到下面这行,去掉注释并修改)
listen_addresses = '*'
# 配置访问控制
sudo nano /etc/postgresql/14/main/pg_hba.conf
# 添加允许连接的客户端(IPv4)
host all all 0.0.0.0/0 md5
# 重启PostgreSQL服务
sudo systemctl restart postgresql
四、数据库性能优化
4.1 MySQL性能调优
关键配置参数:
# 编辑MySQL配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysql]
# InnoDB缓冲区池大小(建议为可用内存的70%)
innodb_buffer_pool_size = 1G
# 最大连接数
max_connections = 200
# 查询缓存(MySQL 8.0已移除,建议升级后再配置其他参数)
query_cache_size = 0
# 日志格式
binlog_format = ROW
# 慢查询日志
slow_query_log = 1
long_query_time = 2
slow_query_log_file = /var/log/mysql/slow.log
4.2 PostgreSQL性能调优
关键配置参数:
# 编辑PostgreSQL配置文件
sudo nano /etc/postgresql/14/main/postgresql.conf
# 共享内存大小(建议为可用内存的25%)
shared_buffers = 256MB
# 工作内存
work_mem = 64MB
# 维护操作内存
maintenance_work_mem = 128MB
# 启用查询计划分析
shared_preload_libraries = 'pg_stat_statements'
# 最大连接数
max_connections = 100
# 启用实时编译
jit = on
4.3 创建索引优化查询
-- MySQL创建索引
CREATE INDEX idx_column_name ON table_name(column_name);
-- PostgreSQL创建索引
CREATE INDEX idx_column_name ON table_name USING btree(column_name);
CREATE INDEX idx_json_column ON table_name USING gin(json_data);
-- 查看查询执行计划
EXPLAIN ANALYZE SELECT * FROM table_name WHERE conditions;
五、数据库备份与恢复
5.1 MySQL备份与恢复
自动备份脚本:
#!/bin/bash
# mysql_backup.sh
# 配置变量
DB_USER="backup_user"
DB_PASS="YourPassword!"
DB_NAME="your_database"
BACKUP_DIR="/var/backups/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# 执行备份
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz
# 保留最近7天的备份
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +7 -delete
echo "备份完成: ${DB_NAME}_${DATE}.sql.gz"
恢复到指定时间点:
# 解压并恢复
zcat your_backup.sql.gz | mysql -u root -p your_database
5.2 PostgreSQL备份与恢复
全量备份:
#!/bin/bash
# pg_backup.sh
# 配置变量
PG_USER="postgres"
BACKUP_DIR="/var/backups/postgres"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# 执行备份
pg_dump -U $PG_USER -Fc your_database > ${BACKUP_DIR}/${DB_NAME}_${DATE}.dump
# 保留最近7天的备份
find $BACKUP_DIR -type f -name "*.dump" -mtime +7 -delete
echo "备份完成"
恢复数据库:
# 恢复到新数据库
pg_restore -U postgres -C -d postgres your_backup.dump
# 恢复到现有数据库(先删除再创建)
dropdb -U postgres your_database
createdb -U postgres your_database
pg_restore -U postgres -d your_database your_backup.dump
5.3 定时自动备份
结合crontab实现每日自动备份:
# 添加定时任务
crontab -e
# 每天凌晨3点执行备份
0 3 * * * /usr/local/bin/mysql_backup.sh >> /var/log/backup.log 2>&1
0 3 * * * /usr/local/bin/pg_backup.sh >> /var/log/pg_backup.log 2>&1
六、数据迁移与升级
6.1 MySQL版本升级
# 导出数据(升级前)
mysqldump --all-databases --single-transaction > all_databases.sql
# 停止MySQL服务
sudo systemctl stop mysql
# 安装新版本
sudo apt install mysql-server
# 启动MySQL服务
sudo systemctl start mysql
# 导入数据
mysql -u root -p < all_databases.sql
6.2 PostgreSQL迁移
# 导出数据(旧服务器)
pg_dump -U postgres your_database > database.dump
# 导入数据(新服务器)
pg_restore -U postgres -d your_database database.dump
注意事项
- 生产环境不要使用root用户运行数据库服务:创建专用系统用户
- 定期修改密码:至少每90天更换一次数据库密码
- 监控磁盘空间:数据库日志和临时文件可能占用大量空间
- 启用SSL/TLS加密:在生产环境中必须启用数据传输加密
- 定期更新版本:关注数据库安全公告,及时打补丁
总结
通过本文的学习,您应该已经掌握:
1. MySQL和PostgreSQL的选型原则
2. 在不同Linux发行版上安装数据库的方法
3. 数据库安全加固的基本步骤
4. 性能优化的关键配置参数
5. 备份恢复的最佳实践
关键要点回顾:
- 生产环境务必设置强密码并限制远程访问
- 根据VPS资源配置innodb_buffer_pool_size
- 定期执行备份并验证备份可用性
- 启用慢查询日志优化SQL语句
- 结合使用定时任务实现自动备份
正确的数据库部署是网站稳定运行的基础。建议将本文与《VPS定时任务设置教程2026》结合,实现数据库的自动化备份运维。
相关文章推荐
如果您对VPS运维和数据管理感兴趣,以下文章可能对您有帮助:
- VPS定时任务设置教程2026:crontab配置与自动化任务 - 实现数据库自动备份
- VPS监控资源使用教程2026:Zabbix/Prometheus监控搭建 - 监控数据库性能指标
- VPS安全加固教程2026:SSH安全与防暴力破解 - 加强数据库安全防护
- VPS搭建网站教程2026:LNMP环境搭建与配置 - 将数据库与Web环境集成
- VPS配置防火墙规则教程2026:iptables与firewalld详解 - 配置数据库端口访问规则

评论(0)