介绍
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版。
先决条件
要学习本教程,您需要:
- 一个Debian 9服务器通过遵循此初始服务器设置指南进行设置 ,包括具有
sudo
权限和防火墙的非root用户。
第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系统中, 根 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设置。 以下是您可以采取的后续步骤的几个示例: