如何在Debian 11上安装MariaDB

3,298 阅读6分钟

简介

MariaDB是一个开源的关系型数据库管理系统,通常被用作MySQL的替代品,作为流行的LAMP(Linux、Apache、MySQL、PHP/Python/Perl)栈的数据库部分。它的目的是要成为MySQL的替代品。

这个安装指南的简短版本包括以下三个步骤。

  • 用以下方法更新你的软件包索引apt
  • 使用apt 安装mariadb-server 包。该软件包还拉入了与MariaDB交互的相关工具
  • 运行附带的mysql_secure_installation 安全脚本以限制对服务器的访问。
sudo apt update
sudo apt install mariadb-server
sudo mysql_secure_installation

本教程将解释如何在Debian 11的服务器上安装MariaDB,并验证它是否正在运行,以及是否具有安全的初始配置。

前提条件

  • 要学习本教程,你将需要一台运行Debian 11的服务器。这台服务器应该有一个非root管理用户和一个用UFW配置的防火墙。

第1步 - 安装MariaDB

在撰写本文时,Debian 11 的默认软件库包括 MariaDB 10.5.15 版本。它被Debian MySQL/MariaDB打包团队标记为默认的MySQL变体。

要安装它,请用apt 更新您服务器上的软件包索引。

sudo apt update

然后安装该软件包。

sudo apt install mariadb-server

这些命令将安装MariaDB,但不会提示你设置密码或进行任何其他配置更改。因为默认的配置使你安装的MariaDB不安全,你将使用mariadb-server 包提供的脚本来限制对服务器的访问并删除未使用的账户。

第2步 - 配置MariaDB

对于新安装的MariaDB,下一步是运行软件包中的安全脚本。这个脚本改变了一些不太安全的默认选项,比如远程root登录和样本用户。

运行安全脚本。

sudo mysql_secure_installation

这将带你通过一系列的提示,你可以对你的MariaDB安装的安全选项进行一些修改。第一个提示将要求你输入当前的数据库密码。由于你还没有设置,按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认证。由于你已经有一个受保护的账户,你可以跳过这一步。输入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

下一个提示会问你是否要改变密码。在Debian 11中,MariaDB的账户与自动系统维护紧密相连,所以你不应该改变该账户的配置认证方式。

这样做会使软件包的更新有可能通过取消管理账户的访问而破坏数据库系统。输入n ,然后按ENTER

Output
Change the root password? [Y/n]

稍后,你会了解到如果套接字认证不适合你的使用情况,如何为密码访问设置一个额外的管理账户。

在这里,你可以按Y ,然后按ENTER ,接受所有后续问题的默认值。这将删除一些匿名用户和测试数据库,禁用远程root登录,并加载这些新的规则,以便MariaDB立即执行你所做的修改。

就这样,你已经完成了MariaDB的初始安全配置。下一步是一个可选的步骤,不过如果你喜欢用密码来验证你的MariaDB服务器,你应该遵循它。

第3步 - (可选)创建一个采用密码认证的管理用户

在运行MariaDB 10.5的Debian系统中,MariaDB用户被设置为默认使用unix_socket ,而不是使用密码进行认证。这在很多情况下可以提高安全性和可用性,但当你需要允许外部程序(如phpMyAdmin)管理权限时,它也会使事情变得复杂。

因为服务器使用账户进行日志轮换和启动及停止服务器等任务,最好不要改变账户的认证细节。在/etc/mysql/debian.cnf 配置文件中改变凭证最初可能会起作用,但软件包的更新有可能会覆盖这些变化。与其修改账户,软件包维护者建议创建一个单独的管理账户,用于基于密码的访问。

为此,我们将创建一个名为admin的新账户,其功能与root账户相同,但配置为密码认证。从你的终端打开MariaDB提示。

sudo mariadb

然后创建一个具有root权限和基于密码访问的新用户。请确保修改用户名和密码以符合你的偏好。

GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

冲洗权限以确保它们被保存并在当前会话中可用。

FLUSH PRIVILEGES;

在这之后,退出MariaDB shell。

exit

最后,让我们测试一下MariaDB的安装。

第4步 - 测试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 工具连接到数据库,这是一个允许你运行管理命令的客户端。例如,这个命令说以root身份使用Unix套接字连接到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服务器的功能之前,你还可以选择创建一个新的管理用户,使用密码认证。

现在你已经有了一个运行中的安全的MariaDB服务器,这里有一些你可以采取的下一步措施的例子,以便与服务器一起工作。