17. 在 Ubuntu 上搭建安全的数据库服务器:MySQL 与 MariaDB 对比

在 Ubuntu 上搭建安全的数据库服务器是构建可扩展且可靠的应用程序的关键基础。无论您是部署动态 Web 应用程序还是管理复杂的企业工作负载,选择正确的数据库解决方案都至关重要。MySQL 和 MariaDB 是两种最流行的开源数据库系统,以其性能、灵活性和可靠性而闻名。

在本指南中,我们将带您逐步完成在 Ubuntu 服务器上安装、配置和保护 MySQL 和 MariaDB 的过程。此外,我们还将比较它们的功能,以帮助您确定最适合您特定用例的选项。通过这种循序渐进的方法,您将能够为您的应用程序搭建一个安全而强大的数据库环境。


往期文章:

01. Ubuntu Server 简介 – SysOSX: AI & Cloud

02. 如何搭建您的第一台 Ubuntu Server:初学者指南 – SysOSX: AI & Cloud

03. 掌握 Ubuntu Server 的 Linux 命令行 – SysOSX: AI & Cloud

04. 管理 Ubuntu Server 上的用户和权限:综合指南 – SysOSX: AI & Cloud

05. Ubuntu Server 网络基础:综合指南 – SysOSX: AI & Cloud

06. 在 Ubuntu Server 上安装和管理软件:完整指南 – SysOSX: AI & Cloud

07.Ubuntu Server 补丁与更新:综合指南 – SysOSX: AI & Cloud

08. 保护您的 Ubuntu Server:加固与防护的实用步骤 – SysOSX: AI & Cloud

09. Ubuntu 服务器审计与日志记录

10. Ubuntu Server 系统监控工具:综合指南 – SysOSX: AI & Cloud

11. Ubuntu 服务器集中式日志记录:必读指南 – SysOSX: AI & Cloud

12. Ubuntu Server 审计与合规:最佳实践 – SysOSX: AI & Cloud

13. 为托管和 Web 应用程序搭建您的 Ubuntu Server:终极指南 – SysOSX: AI & Cloud

14. 在一台 Ubuntu Server 上托管多个网站:实用技巧 – SysOSX: AI & Cloud

15. 管理 Ubuntu Server 上的存储和磁盘:简单指南 – SysOSX: AI & Cloud

16. 在 Ubuntu Server 上搭建文件共享服务:完整指南 – SysOSX: AI & Cloud



先决条件

开始之前,请确保满足以下条件:

  • Ubuntu Server:正在运行的 Ubuntu 实例(建议使用 20.04 或更高版本)。
  • 管理员访问权限:安装和配置数据库服务器需要sudo权限。
  • 互联网连接:下载软件包和更新所需。

MySQL 与 MariaDB:主要区别

虽然 MySQL 和 MariaDB 同源,但近年来它们已经分化,提供了各自不同的功能。以下比较将帮助您为自己的需求选择合适的数据库服务器:

功能MySQLMariaDB
许可证双重许可(GPL 和专有许可)开源(GPL)
性能针对读取密集型工作负载进行了优化读写工作负载的性能均有所提升
默认存储引擎InnoDBAria(InnoDB 的替代品)
功能特性企业功能仅在付费版本中提供许多功能(例如线程池、JSON 函数)都是开源的
兼容性广泛使用,并得到主要平台的支持与 MySQL 兼容,但可能不支持某些专有的 MySQL 功能
复制传统复制增强型复制,支持 Galera Cluster
社区支持庞大的社区和企业支持选项强大的开源社区支持

建议:

  • 选择MySQL(如果您需要企业级功能以及与专有工具的兼容性)。
  • 选择MariaDB(如果您更喜欢具有增强功能和性能的开源软件)。

安装 MySQL 或 MariaDB

步骤 1:更新软件包存储库

更新系统,以确保您使用的是最新的软件包版本:

sudo apt update && sudo apt upgrade

步骤 2:安装 MySQL 或 MariaDB

您可以根据自己的偏好安装 MySQL 或 MariaDB。

安装 MySQL:

sudo apt install mysql-server

安装 MariaDB:

sudo apt install mariadb-server

步骤 3:验证安装

安装完成后,确保数据库服务器正在运行:

对于 MySQL:

sudo systemctl status mysql

对于 MariaDB:

sudo systemctl status mariadb


配置数据库服务器

步骤 1:基本配置

编辑配置文件以优化性能和安全性。

对于 MySQL:

sudo nano /etc/mysql/my.cnf

对于 MariaDB:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

需要调整的关键设置:

  • bind-address:将其设置为0.0.0.0(如果您想要远程访问)。
  • max_connections:对于高流量应用程序,请增大此值。

进行更改后,重启服务:

sudo systemctl restart mysql   # For MySQL
sudo systemctl restart mariadb # For MariaDB

步骤 2:测试数据库服务器

登录数据库服务器以确保其正常工作:

mysql -u root -p


保护您的数据库服务器

步骤 1:运行安全脚本

使用内置安全脚本来加固数据库服务器。

sudo mysql_secure_installation

按照提示执行以下操作:

  • 设置一个强 root 密码。
  • 删除匿名用户。
  • 禁用远程 root 登录。
  • 删除测试数据库。

步骤 2:配置防火墙规则

使用以下工具限制对数据库服务器的访问:ufw:

sudo ufw allow from <your-ip-address> to any port 3306

将<your-ip-address>替换为需要访问的 IP 地址。

步骤 3:启用 SSL/TLS

为了增强安全性,请启用 SSL/TLS 连接。有关设置说明,请参阅MySQL 文档或MariaDB 文档。

(MySQL 示例)

  1. 生成证书:
sudo mysql_ssl_rsa_setup --uid=mysql  
  1. 在配置中启用:
[mysqld]  
ssl-ca = /var/lib/mysql/ca.pem  
ssl-cert = /var/lib/mysql/server-cert.pem  
ssl-key = /var/lib/mysql/server-key.pem  

步骤 4:安装 Fail2Ban(可选)

sudo apt install fail2ban  

在以下文件中为 MySQL/MariaDB 配置 jail 规则 /etc/fail2ban/jail.local.


管理您的数据库服务器

步骤 1:创建数据库

为您的应用程序创建一个数据库:

CREATE DATABASE my_application_db;

步骤 2:创建用户并授予权限

创建一个用户并分配权限:

CREATE USER 'app_user'@'%' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON my_application_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;

步骤 3:监控性能

# Analyze slow queries  
sudo mysqldumpslow -s t /var/log/mysql/mysql-slow.log  

# Use MySQLTuner  
wget https://mysqltuner.pl -O mysqltuner.pl  
perl mysqltuner.pl  

步骤 4:备份和恢复

定期备份对数据安全至关重要。

备份:

mysqldump -u root -p my_application_db > my_application_db.sql

恢复:

mysql -u root -p my_application_db < my_application_db.sql

自动备份(Cron 作业)

# Daily backup at 2 AM  
0 2 * * * /usr/bin/mysqldump -u root -p PASSWORD app_db > /backups/app_db_$(date +\%F).sql  

结论

MySQL 和 MariaDB 都是在 Ubuntu 上搭建数据库服务器的绝佳选择。MySQL 以其企业级功能而闻名,而 MariaDB 则以其开源方法和性能增强而脱颖而出。按照本指南操作,您可以有效地安装、配置、保护和管理数据库服务器。

下一期预告:
在我们的下一篇指南“掌握 Ubuntu 上的 LVM:为数据库服务器提供灵活存储”中,您将学习如何:

  • 为动态数据库存储创建和管理逻辑卷。
  • 在不停机的情况下调整磁盘大小。
  • 实施快照以实现一致性备份。

千万不要错过——关注我们的博客以获取最新动态!

发表评论