VPSKnow

数据库服务搭建指南

高级
30分钟

数据库是动态网站的心脏。本指南将帮助您在 MySQL 和 PostgreSQL 之间做出选择,并提供从安装到维护的全套解决方案。

📊 数据库选择

MySQL 和 PostgreSQL 是目前最流行的两个开源关系型数据库。如何选择?

特性 🐬 MySQL / MariaDB 🐘 PostgreSQL
适用场景 通用 Web 应用 (WordPress, Discuz) 复杂数据分析、GIS 地理信息、高并发写入
生态社区 极其庞大,教程资源最丰富 技术氛围浓厚,扩展插件丰富
SQL 标准 部分支持 严格遵守 SQL 标准 (ACID)
💡

一句话建议: 如果您是新手或搭建 WordPress,请无脑选择 MySQL (MariaDB)。如果您是开发人员,需要处理复杂数据结构,PostgreSQL 是更强大的选择。

🐬 MySQL 安装与配置

1. 安装 MySQL 服务器

sudo apt update
sudo apt install mysql-server -y

# 启动服务
sudo systemctl start mysql
sudo systemctl enable mysql

2. 运行安全初始化脚本

这是安装后最重要的步骤,用于设置 root 密码并移除不安全的默认设置。

sudo mysql_secure_installation

脚本会引导您设置密码强度、移除匿名用户、禁止 root 远程登录等。建议全部选 Y (Yes)。

3. 创建新数据库和用户

-- 登录数据库
sudo mysql

-- 创建数据库
CREATE DATABASE myapp;

-- 创建用户并授权
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'password123';
GRANT ALL PRIVILEGES ON myapp.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

🐘 PostgreSQL 安装与配置

1. 安装 PostgreSQL

sudo apt update
sudo apt install postgresql postgresql-contrib -y

2. 切换用户与登录

PostgreSQL 安装后会创建一个名为 postgres 的 Linux 用户。

# 切换用户
sudo -i -u postgres

# 进入数据库命令行
psql

# 修改默认密码
\password postgres

🛡️ 安全加固

🔒 限制网络访问

如果不需远程访问,确保数据库只监听 127.0.0.1。如果必须远程,使用 UFW 限制特定 IP。

ufw allow from 1.2.3.4 to any port 3306

🔑 专用用户权限

避免使用 root 账户连接应用。为每个应用创建独立的数据库和用户,并只授予必要的权限。

性能调优基础

数据库的默认配置通常比较保守。修改配置文件(MySQL: /etc/mysql/mysql.conf.d/mysqld.cnf)可以显著提升性能。

参数 说明与建议
innodb_buffer_pool_size 最关键参数。建议设为物理内存的 50%-70%(如果只运行数据库)。
max_connections 最大连接数。默认 151 可能不够,建议根据内存调整至 300-500

💾 备份与恢复

自动备份脚本示例

创建一个简单的 Shell 脚本并添加到 Crontab 定时任务中,每天凌晨自动备份。

#!/bin/bash
# 备份 MySQL 数据库
TIMESTAMP=$(date +"%Y%m%d%H%M")
BACKUP_DIR="/var/backups/mysql"
MYSQL_USER="root"
MYSQL_PASSWORD="yourpassword"

mkdir -p $BACKUP_DIR
mysqldump -u$MYSQL_USER -p$MYSQL_PASSWORD --all-databases | gzip > "$BACKUP_DIR/db_backup_$TIMESTAMP.sql.gz"

# 删除 7 天前的备份
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +7 -delete

🚀 下一步行动

数据库部署完毕,您的应用后端环境已搭建完成。接下来,让我们进入网络工具篇:

想让数据库飞起来?

性能瓶颈往往在硬盘 IO。看看我们推荐的 NVMe SSD 高性能 VPS。