菜鸟科技网

VPS创建数据库步骤是什么?

在VPS(虚拟专用服务器)上创建数据库是许多网站和应用部署的关键步骤,无论是搭建个人博客、企业官网还是开发Web应用,数据库都承担着数据存储与管理的重要角色,以下将详细介绍在VPS上创建数据库的完整流程,包括环境准备、数据库安装、用户创建、权限配置及安全优化等关键环节,帮助您顺利完成数据库的搭建。

VPS创建数据库步骤是什么?-图1
(图片来源网络,侵删)

准备工作:登录VPS与系统更新

在创建数据库前,需确保已通过SSH(Secure Shell)登录到VPS,并以root用户或具有sudo权限的用户身份操作,首次登录后,建议先更新系统软件包列表,确保所有组件为最新版本,以提高安全性和稳定性,以CentOS和Ubuntu为例,执行以下命令:

  • CentOS系统
    sudo yum update -y
  • Ubuntu系统
    sudo apt update && sudo apt upgrade -y

安装数据库服务

根据需求选择数据库类型,常见的选择包括MySQL(MariaDB)、PostgreSQL和MongoDB等,这里以最常用的MySQL(以MariaDB为例,它是MySQL的分支,完全兼容且开源)为例,介绍安装步骤。

安装MariaDB

  • CentOS系统
    首先安装MariaDB官方仓库,然后执行安装:
    sudo yum install -y mariadb-server mariadb
  • Ubuntu系统
    更新仓库列表后安装MariaDB:
    sudo apt install -y mariadb-server mariadb-client

启动并设置开机自启

安装完成后,启动MariaDB服务并设置为开机自动启动:

sudo systemctl start mariadb
sudo systemctl enable mariadb

安全初始化配置

运行安全脚本,设置root密码、移除匿名用户、禁止root远程登录等(根据需求选择是否允许root远程访问):

VPS创建数据库步骤是什么?-图2
(图片来源网络,侵删)
sudo mysql_secure_installation

按提示操作,建议设置强密码,并根据安全需求回答相关问题(如“移除匿名用户”“禁止root远程登录”等)。

登录数据库并创建新数据库

登录MariaDB

使用root用户登录数据库:

sudo mysql -u root -p

输入之前设置的root密码,成功后进入MariaDB命令行界面。

创建数据库

通过SQL语句创建数据库,数据库名称建议使用小写字母、数字或下划线,避免特殊字符,例如创建名为myapp_db的数据库:

VPS创建数据库步骤是什么?-图3
(图片来源网络,侵删)
CREATE DATABASE myapp_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • DEFAULT CHARACTER SET utf8mb4:指定字符集为utf8mb4,支持emoji和特殊字符。
  • COLLATE utf8mb4_unicode_ci:指定排序规则,确保多语言字符排序正确。

创建完成后,可通过以下命令查看数据库列表:

SHOW DATABASES;

创建数据库用户并授权

直接使用root用户操作数据库存在安全风险,建议为应用创建独立用户并分配最小必要权限。

创建用户

创建用户并设置密码,例如用户名为app_user,密码为StrongPassword123!

CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
  • 'app_user'@'localhost':限制用户只能从本地(VPS服务器内)连接数据库,若需远程连接,可改为'app_user'@'%'(不推荐,需配合防火墙规则限制IP)。

授权用户

为用户分配对myapp_db数据库的权限,包括查询(SELECT)、插入(INSERT)、更新(UPDATE)、删除(DELETE)、创建表(CREATE)、索引(INDEX)等常用权限:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, ALTER, DROP ON myapp_db.* TO 'app_user'@'localhost';
  • ON myapp_db.*:表示权限作用于myapp_db数据库的所有表(通配符)。
  • 若需授予所有权限(包括管理员权限),可使用GRANT ALL PRIVILEGES ON myapp_db.* TO 'app_user'@'localhost';

刷新权限

授权后需刷新权限使配置生效:

FLUSH PRIVILEGES;

验证用户权限

退出MariaDB(EXIT;),使用新用户登录测试:

mysql -u app_user -p

输入密码后,尝试切换数据库:

USE myapp_db;
SHOW TABLES;

若能正常执行,说明授权成功。

数据库连接与测试

本地连接测试

在VPS服务器内,可通过命令行或应用程序(如PHP、Python)连接数据库,以Python为例,使用pymysql库测试:

import pymysql
connection = pymysql.connect(
    host='localhost',
    user='app_user',
    password='StrongPassword123!',
    database='myapp_db',
    charset='utf8mb4'
)
try:
    with connection.cursor() as cursor:
        cursor.execute("SELECT VERSION()")
        version = cursor.fetchone()
        print(f"Database version: {version}")
finally:
    connection.close()

远程连接配置(可选)

若需从本地电脑远程连接VPS数据库,需:

  1. 开放数据库端口:默认MySQL端口为3306,通过防火墙开放(以iptables为例):
    sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

    或使用ufw(Ubuntu):

    sudo ufw allow 3306/tcp
  2. 修改MySQL配置:编辑/etc/my.cnf(CentOS)或/etc/mysql/mariadb.conf.d/50-server.cnf(Ubuntu),注释掉bind-address = 127.0.0.1,改为bind-address = 0.0.0.0(允许所有IP连接),或指定特定IP(如bind-address = VPS公网IP)。
  3. 重启MariaDBsudo systemctl restart mariadb
  4. 防火墙设置:确保VPS安全组(如阿里云ECS、腾讯云CVM)开放3306端口,并限制访问IP(仅允许本地IP访问)。

数据库日常管理与维护

备份数据库

定期备份数据库是防止数据丢失的重要措施,使用mysqldump工具备份:

mysqldump -u app_user -p myapp_db > myapp_db_backup_$(date +%Y%m%d).sql

恢复数据库:

mysql -u app_user -p myapp_db < myapp_db_backup_20231001.sql

优化数据库性能

  • 定期清理无用数据:DELETE FROM table_name WHERE condition;
  • 优化表结构:使用OPTIMIZE TABLE table_name;(适用于频繁删除的表)。
  • 配置缓存:调整innodb_buffer_pool_size等参数(根据服务器内存大小,建议设为内存的50%-70%)。

安全加固

  • 限制root远程登录:在mysql.user表中删除root用户的远程权限(DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');)。
  • 定期更新数据库版本:关注MariaDB/MySQL官方安全公告,及时升级版本。

常见数据库类型对比

数据库类型 特点 适用场景
MySQL/MariaDB 关系型数据库,开源、性能稳定、社区活跃 网站、Web应用、电商系统
PostgreSQL 关系型数据库,支持复杂查询、扩展性强 数据分析、地理信息系统(GIS)、金融系统
MongoDB NoSQL数据库,文档型存储、灵活的Schema 大数据、内容管理、移动应用后端

相关问答FAQs

问题1:忘记MySQL root密码怎么办?
解答:可通过以下步骤重置root密码:

  1. 停止MariaDB服务:sudo systemctl stop mariadb
  2. 跳过权限表启动:sudo mysqld_safe --skip-grant-tables &
  3. 无密码登录:mysql -u root
  4. 更新密码(MySQL 5.7+):
    UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword123!') WHERE User='root';
    FLUSH PRIVILEGES;
  5. 重启MariaDB:sudo systemctl restart mariadb,使用新密码登录。

问题2:如何限制数据库用户只能访问特定表?
解答:在授权时明确指定表名,而非使用通配符,用户app_user只能访问myapp_db中的users表和orders表:

GRANT SELECT, INSERT, UPDATE, DELETE ON myapp_db.users TO 'app_user'@'localhost';
GRANT SELECT, INSERT ON myapp_db.orders TO 'app_user'@'localhost';
FLUSH PRIVILEGES;

这样用户无法访问myapp_db中的其他表,实现权限最小化原则。

分享:
扫描分享到社交APP
上一篇
下一篇