跳转至

21. 数据库服务基础

本章节指导在 RHEL 9(主机名 LinuxDC)上使用 SecureCRT 配置数据库服务,配合 SecureFX 传输备份文件。内容涵盖 MariaDB/MySQL 和 PostgreSQL 的安装、配置、用户管理、性能优化及备份恢复,全面实用,适合初学者快速掌握和运维人员日常维护。所有操作在 LinuxDC 环境中测试,确保实验一致性。


21.1 前提条件

  • RHEL 9 已安装(参考第 1 章),主机名设置为 LinuxDC
  • 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 9 章)。
  • 使用 SecureFX 传输文件(SFTP 协议)。
  • 具有 root 或 sudo 权限。
  • 系统已订阅并启用 RHEL 和 EPEL 仓库(参考第 2 和第 5 章)。
  • 防火墙和 SELinux 启用(参考第 12 章)。
  • 网络连接正常,时间同步配置完成(参考第 4 章)。

💡 提示:数据库配置需考虑安全(如远程访问限制)和备份策略。在 RHEL 10 中,MariaDB 和 PostgreSQL 支持更多模块化安装和内置容器化选项,提升部署效率。


21.2 数据库配置

21.2.1 配置 MariaDB

  • 安装 MariaDB:

    dnf install -y mariadb-server  # 安装 MariaDB 服务器
    systemctl enable --now mariadb  # 启用并启动 MariaDB 服务
    

  • 安全初始化:

    mariadb-secure-installation  # 运行安全脚本:设置 root 密码、移除匿名用户、禁用远程 root 登录
    

  • 防火墙配置:

    firewall-cmd --permanent --add-service=mysql
    firewall-cmd --reload
    

  • SELinux 配置:

    setsebool -P mysqld_can_network_connect 1  # 允许 MariaDB 网络连接(若需)
    restorecon -Rv /var/lib/mysql  # 恢复 SELinux 上下文
    

🧠 知识点:MariaDB 是 MySQL 的兼容分支,支持 InnoDB 引擎。登录:mariadb -u root -p

检查点systemctl status mariadb 显示 active,mariadb -u root -p 登录成功。

21.2.2 配置 PostgreSQL

  • 安装 PostgreSQL:

    dnf install -y postgresql-server  # 安装 PostgreSQL 服务器
    postgresql-setup --initdb  # 初始化数据库
    systemctl enable --now postgresql  # 启用并启动 PostgreSQL 服务
    

  • 设置密码:

    su - postgres -c "psql -c \"ALTER USER postgres PASSWORD 'securepass';\""  # 设置 postgres 用户密码
    

  • 防火墙配置:

    firewall-cmd --permanent --add-service=postgresql
    firewall-cmd --reload
    

  • SELinux 配置:

    setsebool -P postgresql_can_network_connect 1  # 允许 PostgreSQL 网络连接(若需)
    restorecon -Rv /var/lib/pgsql  # 恢复 SELinux 上下文
    

🧠 知识点:PostgreSQL 支持高级特性如 JSONB。登录:su - postgres -c psql

检查点systemctl status postgresql 显示 active,psql -U postgres -W 登录成功。


21.3 用户与权限管理

21.3.1 MariaDB 用户管理

  • 创建用户并授予权限:
    mariadb -u root -p
    CREATE DATABASE mydb;  # 创建数据库
    CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'securepass';  # 创建用户
    GRANT ALL PRIVILEGES ON mydb.* TO 'appuser'@'localhost';  # 授予权限
    FLUSH PRIVILEGES;  # 刷新权限
    exit
    

21.3.2 PostgreSQL 用户管理

  • 创建用户和数据库:
    su - postgres -c psql
    CREATE DATABASE mydb;  # 创建数据库
    CREATE USER appuser WITH PASSWORD 'securepass';  # 创建用户
    GRANT ALL PRIVILEGES ON DATABASE mydb TO appuser;  # 授予权限
    \q
    

💡 提示:限制用户到特定主机(如 '@localhost')提升安全。

检查点:登录新用户,创建表测试权限。


21.4 性能优化

21.4.1 优化 MariaDB

  • 编辑配置文件:
    vim /etc/my.cnf.d/mariadb-server.cnf
    # 添加到 [mysqld]:
    innodb_buffer_pool_size = 512M  # 设置缓冲池大小
    query_cache_size = 64M  # 查询缓存
    systemctl restart mariadb
    

21.4.2 优化 PostgreSQL

  • 编辑配置文件:
    vim /var/lib/pgsql/data/postgresql.conf
    # 修改:
    shared_buffers = 512MB  # 共享缓冲
    work_mem = 64MB  # 工作内存
    systemctl restart postgresql
    

🧠 知识点:优化基于硬件(如 RAM)。监控:MariaDB 用 SHOW STATUS LIKE 'Innodb%';,PostgreSQL 用 pg_stat_statements

💡 提示:在 RHEL 10 中,数据库优化工具支持更多自动调优和 AI 辅助配置。


21.5 备份与恢复

21.5.1 备份 MariaDB

  • 备份数据库:
    mysqldump -u root -p mydb > /backup/mydb-$(date +%F).sql  # 导出数据库
    

21.5.2 备份 PostgreSQL

  • 备份数据库:
    su - postgres -c "pg_dump mydb > /backup/mydb-$(date +%F).sql"  # 导出数据库
    

21.5.3 恢复 MariaDB

  • 恢复数据库:
    mariadb -u root -p
    CREATE DATABASE mydb_restore;  # 创建恢复数据库
    exit
    mariadb -u root -p mydb_restore < /backup/mydb-$(date +%F).sql  # 导入
    

21.5.4 恢复 PostgreSQL

  • 恢复数据库:

    su - postgres -c "createdb mydb_restore"  # 创建恢复数据库
    su - postgres -c "psql mydb_restore < /backup/mydb-$(date +%F).sql"  # 导入
    

  • 创建自动备份脚本:

    vim /usr/local/bin/db-backup.sh
    # 添加:
    #!/bin/bash
    mysqldump -u root -psecurepass mydb > /backup/mydb-$(date +%F).sql
    su - postgres -c "pg_dump mydb > /backup/pgdb-$(date +%F).sql"
    chmod +x /usr/local/bin/db-backup.sh
    crontab -e
    # 添加:
    0 2 * * * /usr/local/bin/db-backup.sh
    

检查点:备份文件存在,恢复数据库数据完整。


21.6 常见问题与排查

🔍 故障排查

  • 问题 1:数据库启动失败
    解决journalctl -u mariadbpostgresql,检查配置语法(mariadb-checkpg_config)。

  • 问题 2:权限错误
    解决:验证用户(SHOW GRANTS FOR 'appuser'@'localhost';\du),日志(/var/log/mariadb/var/lib/pgsql/data/log)。

  • 问题 3:备份失败
    解决:检查空间(df -h /backup),权限(chown),脚本执行(bash -x db-backup.sh)。

  • 问题 4:性能低下
    解决:监控查询(EXPLAINEXPLAIN ANALYZE),调整参数,重启服务。


21.7 实践任务

  1. 使用 SecureCRT 通过 SSH(端口 2222)登录 LinuxDC,安装 MariaDB 和 PostgreSQL,完成安全初始化。
  2. 创建数据库 mydb 和用户 appuser
  3. 创建自动备份脚本,备份 MariaDB 和 PostgreSQL 数据库。
  4. 恢复 MariaDB 数据库到 mydb_restore 并验证数据。

检查点:数据库运行,用户权限正常,备份/恢复成功。


21.8 自测问题

  • 问题 1:如何创建 MariaDB 用户并授予权限?
    答案CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'securepass'; GRANT ALL ON mydb.* TO 'appuser'@'localhost';

  • 问题 2:如何备份 PostgreSQL 数据库?
    答案su - postgres -c "pg_dump mydb > /backup/mydb-$(date +%F).sql"

  • 问题 3:如何优化 MariaDB 性能?
    答案:编辑 /etc/my.cnf.d/mariadb-server.cnf,设置 innodb_buffer_pool_size=512M, 然后 systemctl restart mariadb


🧾 总结
本章完整介绍了 RHEL 9 数据库服务基础的配置,包括 MariaDB 和 PostgreSQL 的安装、管理与优化。这些技能扩展业务应用,为后续邮件服务和 VPN 配置提供数据持久化支持。