引言
MariaDB 是一个开源的关系型数据库管理系统,通常用作 MySQL 的替代方案;MySQL 是常见于流行的 LAMP( Linux、Apache、MySQL、PHP / Python / Perl )技术栈中的数据库。MariaDB 的目标是成为 MySQL 的替代品。
本安装指南的简要版本包括以下三个步骤:
- 使用 apt 更新你的软件包列表
- 使用 apt 安装 mariadb-server 软件包。该软件包同时会引入用于与 MariaDB 交互的相关工具
- 运行 mysql_secure_installation 安全脚本以限制对服务器的访问

第 1 步 — 安装 MariaDB
在撰写本文时,Ubuntu 22.04 默认的 APT 软件源中包含 MariaDB 10.5.12 版本。
要安装它,请先用 apt 更新服务器上的软件包索引:
sudo apt update
然后安装 MariaDB 服务器版本的软件包:
sudo apt install mariadb-server
这些命令会安装 MariaDB,但不会提示你设置密码或进行其他配置修改。由于默认配置会使你的 MariaDB 安装处于不安全的状态,你将使用 mariadb-server 软件包提供的一个脚本来限制对服务器的访问并删除未使用的账户。
第 2 步 — 配置 MariaDB
对于新安装的 MariaDB,下一步是运行随附的安全脚本。该脚本会修改一些安全性较低的默认选项。
运行安全脚本:
sudo mysql_secure_installation
它会引导你完成一系列提示,让你修改 MariaDB 安装的安全选项。第一个提示会要求你输入 root 用户的当前密码。由于你尚未设置密码,请按 ENTER。
Output
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, you'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
系统会询问你是否希望切换到 unix socket 认证方式。由于你已经保护了 root 账户,可以跳过这一步。输入 n 然后按 ENTER。
Output
. . .
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] n
下一个提示会询问你是否希望设置 root 用户的密码。在 Ubuntu 上,MariaDB 的 root 账户与系统的自动维护紧密相关,因此你不应修改为该账户配置的认证方式。
这样做可能会因失去管理账户的访问权限而影响数据库系统。输入 n 然后按 ENTER。
Output
. . .
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] n
之后,如果 socket 认证不适合你的使用场景,你会了解如何配置一个额外的、可用密码访问的管理账户。
从这里开始,你可以按 Y 然后按 ENTER,对后续所有问题都接受默认值。这将删除一些匿名用户和测试数据库、禁用 root 远程登录,并加载新规则,使 MariaDB 立即实施你所做的修改。
至此,你已完成 MariaDB 的初始安全配置。下一步是可选的,但如果你更倾向于使用密码向 MariaDB 服务器进行身份验证,则应当执行。
第 3 步 — 测试 MariaDB
从默认软件源安装时,MariaDB 会自动开始运行。要验证这一点,请检查它的状态。
sudo systemctl status mariadb
你会看到类似如下的输出:
Output
● mariadb.service - MariaDB 10.5.12 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-03-11 22:01:33 UTC; 14min ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
. . .
如果 MariaDB 没有运行,你可以使用 sudo systemctl start mariadb 命令启动它。
为了进一步验证,你可以尝试使用 mysqladmin 工具连接数据库,它是一个可以让你执行管理命令的客户端。例如,下面这条命令表示以 root 身份通过 Unix socket 连接 MariaDB 并返回版本号:
sudo mysqladmin version
你会看到类似如下的输出:
Output
mysqladmin Ver 9.1 Distrib 10.5.12-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Server version 10.5.12-MariaDB-1build1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /run/mysqld/mysqld.sock
Uptime: 15 min 53 sec
Threads: 1 Questions: 482 Slow queries: 0 Opens: 171 Open tables: 28 Queries per second avg: 0.505
结论
在本指南中,你安装了 MariaDB 关系型数据库管理系统,并使用它自带的 mysql_secure_installation 脚本对其进行了安全加固。
致谢
本指南由 Awoui 改编自 Brian Boucheron/DigitalOcean 的作品,依据知识共享 署名-非商业性使用-相同方式共享 4.0 国际许可协议发布
