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 mariadb或postgresql,检查配置语法(mariadb-check、pg_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:性能低下
解决:监控查询(EXPLAIN或EXPLAIN ANALYZE),调整参数,重启服务。
21.7 实践任务
- 使用 SecureCRT 通过 SSH(端口 2222)登录
LinuxDC,安装 MariaDB 和 PostgreSQL,完成安全初始化。 - 创建数据库
mydb和用户appuser。 - 创建自动备份脚本,备份 MariaDB 和 PostgreSQL 数据库。
- 恢复 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 配置提供数据持久化支持。