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

注意事项

  1. 生产环境不要使用root用户运行数据库服务:创建专用系统用户
  2. 定期修改密码:至少每90天更换一次数据库密码
  3. 监控磁盘空间:数据库日志和临时文件可能占用大量空间
  4. 启用SSL/TLS加密:在生产环境中必须启用数据传输加密
  5. 定期更新版本:关注数据库安全公告,及时打补丁

总结

通过本文的学习,您应该已经掌握:
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详解 - 配置数据库端口访问规则

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。