云主机自建数据库怎么设置?

HCRM技术_小炮 云主机 2026-06-29 4 1

在云主机上自建数据库,指的是自行在云服务器(如阿里云ECS、腾讯云CVM、华为云HECS等)上安装、配置、维护数据库软件,这种方式相比云厂商提供的托管数据库服务(如RDS),拥有更高的自主控制权,但需要自行负责运维、备份和安全。

以下是一套标准、安全的自建数据库设置流程,以最常见的MySQL/MariaDB 为例(PostgreSQL、SQL Server等类似),涵盖安装、安全配置、远程连接、基础优化和备份。

第一步:环境准备与安装

1、选择操作系统:推荐使用主流的 Linux 发行版,如 CentOS 7/8、Ubuntu 20.04/22.04、Debian 11/12,Windows Server不建议用于生产环境,除非有特定依赖。

2、连接云主机:通过 SSH(Windows 用户可用 Xshell/Putty,macOS/Linux 用户直接终端)连接到你的云主机。

3、安装数据库软件

以 Ubuntu/Debian 为例安装 MySQL 8.0

        sudo apt update
        sudo apt install mysql-server -y

以 CentOS/RHEL 为例安装 MariaDB 10.5

        sudo yum install epel-release -y
        sudo yum install mariadb-server mariadb -y

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

        sudo systemctl start mysqld   # MySQL
        sudo systemctl start mariadb  # MariaDB
        sudo systemctl enable mysqld  # 或 mariadb

第二步:基础安全配置(关键)

刚安装的数据库存在默认空密码和匿名账户等风险,必须立即执行安全脚本:

sudo mysql_secure_installation

按提示操作:

- 设置 root 密码(务必强密码,包含大小写、数字、特殊字符)。

- 移除匿名用户:Remove anonymous users? [Y/n] y

- 禁止 root 远程登录:Disallow root login remotely? [Y/n] y(重要!)

- 移除测试数据库:Remove test database and access to it? [Y/n] y

- 重新加载权限表:Reload privilege tables now? [Y/n] y

第三步:创建用户与数据库(远程连接必备)

禁止使用 root 用户进行远程操作,你需要创建一个普通用户并授权。

1、登录 MySQL/MariaDB(使用刚设置的 root 密码):

    sudo mysql -u root -p

2、创建数据库

    CREATE DATABASEyour_db_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3、创建用户并授权远程访问

    -- 创建一个用户,允许从任何IP连接(%表示所有IP,可替换为特定IP如 '192.168.1.%')
    CREATE USER 'your_user'@'%' IDENTIFIED BY 'StrongPassword!123';
    -- 授予该用户对你创建的数据库的所有权限
    GRANT ALL PRIVILEGES ONyour_db_name.* TO 'your_user'@'%';
    -- 刷新权限
    FLUSH PRIVILEGES;

4、退出\q

第四步:配置远程访问与防火墙

云主机默认配置可能只允许本地访问。

1、修改数据库配置文件

MySQLsudo vi /etc/mysql/mysql.conf.d/mysqld.cnfsudo vi /etc/mysql/my.cnf

MariaDBsudo vi /etc/my.cnf.d/server.cnf

- 找到bind-address = 127.0.0.1 这一行,将其修改为:

        bind-address = 0.0.0.0

或者直接注释掉这一行(#bind-address = ...),这表示数据库监听所有网卡,允许远程连接。

2、重启数据库服务sudo systemctl restart mysqld(或mariadb

3、配置云主机安全组(最重要!)

- 登录云厂商控制台(阿里云/腾讯云/华为云等)。

- 找到你的云主机实例,点击“管理” -> “安全组”。

- 添加入方向规则:

端口3306(MySQL/MariaDB默认端口)

授权对象强烈建议不要设为0.0.0.0/0(允许所有IP),应该设为:

特定IP:如你的办公公网IP或应用服务器IP,形如123.123.123.123/32

内网IP段:如果你的应用也在同一云厂商的其他主机上,使用内网IP段(如172.16.0.0/12)更安全、速度更快。

- 协议:TCP

- 策略:允许

为什么不能开放0.0.0.0/0? 因为数据库端口会立刻被全球的扫描器发现并尝试暴力破解密码,极不安全。

4、配置操作系统防火墙(如果开启):

- Ubuntu:sudo ufw allow from <你的IP> to any port 3306

- CentOS:sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="<你的IP>" port port="3306" protocol="tcp" accept' 然后firewall-cmd --reload

第五步:测试连接

在本地电脑(云主机外部)使用数据库客户端工具测试:

- 命令行(需安装mysql客户端):mysql -h <你的云主机公网IP> -P 3306 -u your_user -p

- 图形化工具: Navicat、DBeaver、Workbench、HeidiSQL 等。

如果连接失败,请按顺序检查

1. 安全组规则是否已添加(云厂商控制台允许需要1-2分钟生效)。

2. 操作系统防火墙(ufwfirewalld)是否放行3306端口。

3. 数据库配置文件中bind-address 是否已改为0.0.0.0

4. 用户权限是否已正确授权(GRANT 语句执行无误)。

5. 云主机的网卡IP地址是否正确(注意区分公网和内网IP)。

第六步:基础性能优化(可选,但推荐)

编辑数据库配置文件(位置同上),在[mysqld] 部分下添加或修改以下参数(根据云主机内存调整):

基础优化(内存为2G-4G的云主机示例)
innodb_buffer_pool_size = 1G        # 一般设为物理内存的50%-70%
innodb_log_file_size = 256M         # 提高写入性能
max_connections = 200               # 避免连接数过大耗尽内存
character-set-server = utf8mb4      # 统一字符集
collation-server = utf8mb4_unicode_ci
慢查询日志(排查性能问题)
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2

修改后重启数据库:sudo systemctl restart mysqld

第七步:备份策略(保命操作)

自建数据库最重要的一点:必须建立自动备份

1、最简单的定时脚本(示例使用mysqldump):

    # 创建备份目录
    sudo mkdir -p /data/backup/mysql
    # 编写脚本 /usr/local/bin/backup_mysql.sh
    #!/bin/bash
    TIMESTAMP=$(date +"%Y%m%d%H%M%S")
    mysqldump -u root -p'YourDBRootPassword' --all-databases --single-transaction --routines --triggers --events | gzip > /data/backup/mysql/full_backup_$TIMESTAMP.sql.gz

2、设置定时任务crontab -e

    # 每天凌晨2点备份
    0 2 * * * /bin/bash /usr/local/bin/backup_mysql.sh

3、异地备份:建议将备份文件通过rsyncscp 传输到另外一台服务器或对象存储(如阿里云OSS、腾讯云COS)上,防止云主机故障后数据丢失。

重要提醒

安全第一:永远不要将数据库的 root 密码、应用密码硬编码在代码中,使用环境变量或密钥管理服务。

SSL加密:对于互联网上的数据库连接,强烈建议开启 SSL/TLS 加密,防止数据在传输中被窃听,步骤略复杂,可参考官方文档或云厂商文档。

性能监控:安装prometheusgrafana 或使用云厂商的云监控来监控数据库的CPU、内存、连接数、慢查询等情况。

替代方案:如果你不想投入精力进行上述所有运维工作(备份、监控、高可用、打补丁),建议直接使用云厂商的RDS(托管数据库服务),虽然价格稍高,但免去了大量运维成本和数据丢失风险,对于生产环境通常是更优选择。

按照以上步骤,你就能在云主机上搭建一个可用、安全、有一定性能保障的自建数据库了。

文章摘自:https://idc.huochengrm.cn/zj/27010.html

评论

精彩评论
  • 2026-06-29 03:46:01

    云主机自建数据库设置需先安装数据库软件,配置用户权限,设置安全组规则,确保数据备份与恢复机制,优化性能参数,实现数据库的高效稳定运行。