如何在 Debian 11中安装 MariaDB
作者:Alex Garnett
导语
MariaDB是一个开源的关系数据库管理系统,经常替代 MySQL 用来做广泛流行的 LAMP(即Linux, Apache, MySQL, PHP/Python/Perl)堆的数据库部分。MariaDB 旨在成为 MySQL 的替代品。
本安装教程大致包含以下三个步骤:
- 使用
apt
更新您的包索引(package index) - 使用
apt
安装mariadb-server
包。该软件包还囊括了用于和 MariaDB 交互的工具。 - 运行包中带有的
mysql_secure_installation
安全脚本以限制对服务器的访问。
$ sudo apt update
$ sudo apt install mariadb-server
$ sudo mysql_secure_installation
本教程将介绍如何在 Debian 11服务器上安装 MariaDB,验证MariaDB是否可以运行,和其初始配置是否安全。
前期准备
- 本教程需要您的服务器可以运行 Debian 11。此外,服务器还需有一个非 root 管理员和一个配置了 UFW 的防火墙。
第一步:安装 MariaDB
在本文撰写时,Debian 11的默认软件储存库包括了10.5.15版本的MariaDB。Debian 的 MySQL/MariaDB 打包团队将其标记为默认的 MySQL变体。
在安装 MariaDB 前,先使用 apt
更新服务器上包的索引:
$ sudo apt update
然后安装 MariaDB 包:
$ sudo apt install mariadb-server
这些指令会安装 MariaDB,但不会提示您设置密码或改变任何配置。这些默认配置并不能保证MariaDB的安全,您需要使用 mariadb-server
包提供的脚本,以此限制对服务器的访问和删除未使用的账户。
第二步:配置 MariaDB
完成新的 MariaDB 安装后,下一步是运行其自带的安全脚本。这个脚本更改了一些不太安全的默认配置选项,例如远程 root 登录和示例用户等。
运行安全脚本:
$ sudo mysql_secure_installation
脚本会用一系列提示引导您,借此,您可以更改 MariaDB 安装的一些安全选项。第一个提示将需要您输入当前数据库的 root 密码。由于您还没有设置密码,请按 ENTER
表示“无”。
输出:
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套接字身份验证。由于您有受保护的 root 用户,您可以跳过这一步。输入 n
,然后按 ENTER
。
输出:
. . .
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 密码。在 Debian 11中,MariaDB的 root 账户与系统自动维护密切相关,因此,您不应更改该账户配置的身份验证方法。
如果您修改了密码,一次软件包更新就可能破坏数据库系统,因为更新可能会清除管理账户的访问权限。输入 n
,然后按 ENTER
。
输出:
Change the root password? [Y/n]
稍后,本教程会介绍当套接字身份验证不符合您的需求时,该如何设置额外的管理员账户以使用密码访问。
后续的提示中,您可以先按 Y
键再按 ENTER
键,从而接受后续所有问题的默认选项。这将删除一些匿名用户和测试数据库,禁用远程 root 登录,并加载这些新规则,以便 MariaDB 立即应用您的更改。
至此,您已完成了 MariaDB 的初始安全配置。下一步并非必须,但如果您希望在 MariaDB 服务器进行身份验证时使用密码,您可以参考以下步骤。
(可选)第三步:创建一个使用密码进行身份验证的管理员
在运行 MariaDB 10.5的 Debian 系统中,MariaDB 的 root 用户默认使用 unix_socket 插件进行身份验证,而不是使用密码。通常来说,这能带来更强的安全性和可用性,但如果您需要授予外部程序管理权限,使用unix_socket
就会使事情变得很复杂。
由于服务器会使用 root 账户执行一些重要任务,如日志轮换和启动 / 停止服务器等,因此最好不要更改 root 账户身份验证的详细信息。一开始,在 /etc/mysql/debian.cnf
配置文件中更改证书可能会有用,但软件包的更新会覆盖这些改动。MariaDB_serve 包的维护者建议不要修改 root 账户,而是创建一个单独的管理员账户,并用密码访问该账户。
因此,我们将创建一个名为 admin 的新账户。这个账户具有和 root 账户相同的功能,但配置为密码验证。在终端中打开 MariaDB 提示符:
$ sudo mariadb
然后,创建一个具有 root 权限且使用密码访问的新用户。记得按需更改用户名和密码:
$ GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
刷新权限以确保它们已被保存,且在当前会话中可用:
$ FLUSH PRIVILEGES;
接下来,退出 MariaDB shell:
$ exit
最后,测试 MariaDB 是否成功安装。
第四步:测试 MariaDB
从默认存储库中安装完成后,MariaDB 将自动开始运行。检查它的状态以进行测试。
$ sudo systemctl status mariadb
输出将会与以下类似:
Output
● mariadb.service - MariaDB 10.5.15 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
工具连接到数据库,以进行额外的检查。mysqladmin
工具是一个客户端,允许您在其中运行管理命令。例如,以下命令表示使用 Unix 套接字以 root 身份连接到 MariaDB,并返回其版本。
$ sudo mysqladmin version
输出将与以下类似:
Output
mysqladmin Ver 9.1 Distrib 10.5.15-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Server version 10.5.15-MariaDB-0+deb11u1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /run/mysqld/mysqld.sock
Uptime: 4 min 20 sec
Threads: 1 Questions: 72 Slow queries: 0 Opens: 32 Open tables: 25 Queries per second avg: 0.276
结语
本教程介绍了如何安装 MariaDB 关系数据库管理系统,并使用它自带的 mysql_secure_installation
脚本提高其安全性。在测试 MariaDB 服务器的功能之前,您还可以创建一个使用密码进行身份验证的新管理员用户。