如何在Debian9上安装MariaDB

来自菜鸟教程
跳转至:导航、​搜索

介绍

MariaDB 是一个开源数据库管理系统,通常作为流行的 LAMP(Linux、Apache、MySQL、PHP/Python/Perl)堆栈的一部分安装在 MySQL 的位置。 它使用关系数据库和 SQL(结构化查询语言)来管理其数据。 由于许可问题,MariaDB 在 2009 年从 MySQL 分叉出来。

安装的简短版本很简单:更新您的包索引,安装 mariadb-server 包(指向 MariaDB),然后运行包含的安全脚本。

sudo apt update
sudo apt install mariadb-server
sudo mysql_secure_installation

本教程将解释如何在 Debian 9 服务器上安装 MariaDB 10.1 版。

先决条件

要遵循本教程,您将需要:

第 1 步 — 安装 MariaDB

在 Debian 9 上,MariaDB 版本 10.1 默认包含在 APT 软件包存储库中。 它被 Debian MySQL/MariaDB 打包团队标记为默认的 MySQL 变体。

要安装它,请使用 apt 更新服务器上的包索引:

sudo apt update

然后安装包:

sudo apt install mariadb-server

这将安装 MariaDB,但不会提示您设置密码或进行任何其他配置更改。 因为这会使您的 MariaDB 安装不安全,所以我们将在接下来解决这个问题。

第 2 步 — 配置 MariaDB

对于全新安装,您需要运行包含的安全脚本。 这会更改一些不太安全的默认选项,例如远程 root 登录和示例用户。

运行安全脚本:

sudo mysql_secure_installation

这将引导您完成一系列提示,您可以在其中对 MariaDB 安装的安全选项进行一些更改。 第一个提示会要求你输入当前数据库的root密码。 由于我们还没有设置,按ENTER表示“无”。

下一个提示询问您是否要设置数据库 root 密码。 键入 N,然后按 ENTER。 在 Debian 中,MariaDB 的 root 帐户与自动系统维护密切相关,因此我们不应更改为该帐户配置的身份验证方法。 这样做可以使包更新通过删除对管理帐户的访问来破坏数据库系统。 稍后,我们将介绍如果套接字身份验证不适合您的用例,如何有选择地设置额外的管理帐户以进行密码访问。

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

第 3 步 - (可选)调整用户身份验证和权限

在运行 MariaDB 10.1 的 Debian 系统中,root MariaDB 用户默认设置为使用 unix_socket 插件进行身份验证,而不是使用密码。 这在许多情况下允许更高的安全性和可用性,但是当您需要允许外部程序(例如,phpMyAdmin)管理权限时,它也会使事情复杂化。

由于服务器使用 root 帐户执行日志轮换和启动和停止服务器等任务,因此最好不要更改 root 帐户的身份验证详细信息。 更改 /etc/mysql/debian.cnf 中的帐户凭据最初可能有效,但软件包更新可能会覆盖这些更改。 如果您需要设置基于密码的访问权限,包维护者建议不要修改 root 帐户,而是创建一个单独的管理帐户。

为此,我们将创建一个名为 admin 的新帐户,该帐户具有与 root 帐户相同的功能,但配置为密码验证。 为此,请从终端打开 MariaDB 提示符:

sudo mysql

现在,我们可以创建一个具有 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

您将看到类似于以下内容的输出:

输出

● mariadb.service - MariaDB database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-09-04 16:22:47 UTC; 2h 35min ago
  Process: 15596 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSIT
  Process: 15594 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
  Process: 15478 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   
  Process: 15474 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITI
  Process: 15471 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysql
 Main PID: 15567 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 27 (limit: 4915)
   CGroup: /system.slice/mariadb.service
           └─15567 /usr/sbin/mysqld

Sep 04 16:22:45 deb-mysql1 systemd[1]: Starting MariaDB database server...
Sep 04 16:22:46 deb-mysql1 mysqld[15567]: 2018-09-04 16:22:46 140183374869056 [Note] /usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) starting as process 15567 ...
Sep 04 16:22:47 deb-mysql1 systemd[1]: Started MariaDB database server.

如果 MariaDB 没有运行,您可以使用 sudo systemctl start mariadb 启动它。

如需进一步检查,您可以尝试使用 mysqladmin 工具连接到数据库,该工具是一个允许您运行管理命令的客户端。 例如,此命令表示以 root 身份连接到 MariaDB 并使用 Unix 套接字返回版本:

sudo mysqladmin version

您应该会看到与此类似的输出:

Outputmysqladmin  Ver 9.1 Distrib 10.1.26-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Server version      10.1.26-MariaDB-0+deb9u1
Protocol version    10
Connection      Localhost via UNIX socket
UNIX socket     /var/run/mysqld/mysqld.sock
Uptime:         2 hours 44 min 46 sec

Threads: 1  Questions: 36  Slow queries: 0  Opens: 21  Flush tables: 1  Open tables: 15  Queries per second avg: 0.003

如果您为单独的管理用户配置了密码身份验证,则可以通过键入以下内容执行相同的操作:

mysqladmin -u admin -p version

这意味着 MariaDB 已启动并正在运行,并且您的用户能够成功进行身份验证。

结论

您现在已经在服务器上安装了基本的 MariaDB 设置。 以下是您可以采取的后续步骤的一些示例: