如何在 Debian 10 上安装 MariaDB
介绍
LAMP(Linux、Apache、MySQL、PHP/Python/Perl)堆栈。它旨在成为 MySQL 的直接替代品,而 Debian 现在仅随 MariaDB 软件包一起提供。如果您尝试安装与 MySQL 服务器相关的包,您将收到兼容的 MariaDB 替换版本。
本安装指南的简短版本包括以下三个步骤:
- 使用
apt
更新您的包索引 - 使用
apt
安装mariadb-server
包。该软件包还引入了与 MariaDB 交互的相关工具 - 运行包含的
mysql_secure_installation
安全脚本以限制对服务器的访问
- sudo apt update
- sudo apt install mariadb-server
- sudo mysql_secure_installation
本教程将解释如何在 Debian 10 服务器上安装 MariaDB 10.3 版,并验证它是否正在运行并具有安全的初始配置。
先决条件
要完成本教程,您将需要一个 Debian 10 服务器,该服务器由具有 sudo
权限和防火墙的非根用户设置。您可以按照我们的初始服务器设置指南进行设置。
第 1 步 — 安装 MariaDB
在 Debian 10 上,MariaDB 10.3 版默认包含在 APT 包存储库中。它被 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
指示“无”。
下一个提示询问您是否要设置数据库根密码。键入 N
,然后按 ENTER
。在 Debian 中,MariaDB 的根帐户与自动系统维护密切相关,因此您不应更改为该帐户配置的身份验证方法。这样做将使包更新有可能通过删除对管理帐户的访问来破坏数据库系统。稍后,我们将介绍如果套接字身份验证不适合您的用例,如何有选择地设置额外的管理帐户以进行密码访问。
从那里,您可以按 Y
,然后按 ENTER
接受所有后续问题的默认值。这将删除一些匿名用户和测试数据库,禁用远程 root 登录,并加载这些新规则,以便 MariaDB 立即尊重您所做的更改。
第 3 步 —(可选)调整用户身份验证和权限
在运行 MariaDB 10.3 的 Debian 系统中,MariaDB 根用户默认设置为使用 unix_socket
插件进行身份验证,而不是使用密码。在许多情况下,这可以提供更高的安全性和可用性,但是当您需要允许外部程序(例如 phpMyAdmin)管理权限时,它也会使事情复杂化。
由于服务器使用 root 帐户执行日志轮换以及启动和停止服务器等任务,因此最好不要更改 root 帐户的身份验证详细信息。在 /etc/mysql/debian.cnf
配置文件中更改凭据最初可能会起作用,但软件包更新可能会覆盖这些更改。软件包维护者建议为基于密码的访问创建一个单独的管理帐户,而不是修改根帐户。
为了演示这个过程,我们将创建一个名为 admin
的新帐户,它具有与 root 帐户相同的功能,但配置为密码身份验证。为此,请从您的终端打开 MariaDB 提示符:
- sudo mysql
现在,创建一个具有 root 权限和基于密码的访问权限的新用户。更改用户名和密码以符合您的偏好:
- GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
刷新权限以确保它们已保存并在当前会话中可用:
- FLUSH PRIVILEGES;
在此之后,退出 MariaDB shell:
- exit
OutputBye
接下来,让我们测试 MariaDB 安装。
第 4 步 — 测试 MariaDB
从默认存储库安装后,MariaDB 应该会自动开始运行。要对此进行测试,请检查其状态:
- sudo systemctl status mariadb
您将收到类似于以下内容的输出:
Output● mariadb.service - MariaDB 10.3.31 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset:
Active: active (running) since Mon 2022-03-14 18:33:32 UTC; 2min 2s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 3229 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 31 (limit: 4915)
Memory: 74.4M
CGroup: /system.slice/mariadb.service
└─3229 /usr/sbin/mysqld
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: performance_schema
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: Phase 6/7: Checking and u
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: Running 'mysqlcheck' with
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: # Connecting to localhost
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: # Disconnecting from loca
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: Processing databases
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: information_schema
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: performance_schema
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: Phase 7/7: Running 'FLUSH
Mar 14 18:33:32 mariadb /etc/mysql/debian-start[3267]: OK
如果 MariaDB 没有运行,您可以使用命令 sudo systemctl start mariadb
启动它。
要进行额外的检查,您可以尝试使用 mysqladmin
工具连接到数据库,这是一个允许您运行管理命令的客户端。例如,此命令表示以 root 身份连接到 MariaDB 并使用 Unix 套接字返回版本:
- sudo mysqladmin version
您的输出应类似于以下内容:
Outputmysqladmin Ver 9.1 Distrib 10.3.31-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Server version 10.3.31-MariaDB-0+deb10u1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 3 min 6 sec
Threads: 6 Questions: 473 Slow queries: 0 Opens: 175 Flush tables: 1 Open tables: 31 Queries per second avg: 2.543
如果您配置了一个单独的管理用户使用密码验证,您可以通过运行以下命令来执行相同的操作:
- mysqladmin -u admin -p version
OutputVer 9.1 Distrib 10.3.31-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Server version 10.3.31-MariaDB-0+deb10u1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 7 min 11 sec
Threads: 6 Questions: 474 Slow queries: 0 Opens: 175 Flush tables: 1 Open tables: 31 Queries per second avg: 1.099
此输出意味着 MariaDB 已启动并正在运行,并且您的用户能够成功进行身份验证。
结论
在本指南中,您安装了 MariaDB 作为 SQL 服务器。在安装过程中,您还保护了服务器。您还可以选择创建一个单独的用户,以确保跨包更新对 MariaDB 进行管理访问。
现在您已经拥有一个正在运行且安全的 MariaDB 服务器,下面是您可以采取的后续步骤的一些示例来使用该服务器:
- 导入和导出数据库
您还可以将 MariaDB 合并到更大的应用程序堆栈中:
- 如何在 Debian 10 上安装 Linux、Nginx、MariaDB、PHP(LEMP 堆栈)