在 Archlinux 上安装使用 MariaDB
本文最后更新于 2024年6月3日 14:27
MariaDB
是一个可靠、高性能的数据库,旨在为用户提供长期免费的、向下兼容的、能直接替代 MySQL
的数据库服务。
许多 Linux 发行版和 BSD 操作系统都包含 MariaDB
,并将其作为 MySQL
的默认实现。例如 Archlinux、Debian(从 Debian 9 开始)、Fedora(从 Fedora 19 开始)、Red Hat Enterprise Linux(从 RHEL 7 开始)、CentOS(从 CentOS 7 开始)、OpenBSD(从 5.7 开始)和 FreeBSD 等[1]。
可见开源社区对 MySQL
未来发展和开放性的担忧,并且 MariaDB
几乎完全兼容 MySQL
,使用上没有太大区别,可以放心使用。
0. btrfs
文件系统禁用 COW
此小节为 btrfs
文件系统禁用 COW
,如果你的系统分区为 ext4
,可以跳过这一小节。
Btrfs(B-tree 文件系统),一种支持写入时复制(COW)的文件系统。COW
简单说就是 写入 不会就地覆盖数据
;相反,数据块在被复制和修改后会 写入到新的位置
,元数据也会更新以指向新的位置。
如果你的 MariaDB
数据库运行在 btrfs
系统分区之上,你应当在创建数据库之前禁用 Copy-on-Write
特性[2],否则可能会导致数据库性能问题。
不应创建数据库之后再禁用,因为这一更改只会影响新创建的文件,而不会影响现有文件。
我们创建一个空目录 /var/lib/mysql
:
1 |
|
这个目录就是 MariaDB
数据库的数据目录。
展示目录属性:
1 |
|
输出如下:
1 |
|
表示 目录没有设置任何属性
现在设置禁用目录 Copy-on-Write
特性:
1 |
|
展示目录属性:
1 |
|
输出如下:
1 |
|
C
表示 关闭 Copy-on-Write
特性[3]。
至此,我们已经在 /var/lib/mysql
目录下禁用了 Copy-on-Write
特性。
1. 安装 MariaDB
输入以下命令来安装 MariaDB
:
1 |
|
2. 初始化数据库
根据安装提示,我们在使用前还需初始化数据库:
1 |
|
--user=mysql
表示使用 mysql
用户来初始化数据库,--basedir=/usr
表示 MariaDB
的安装目录,--datadir=/var/lib/mysql
表示数据库的数据目录。
我们可以在输出中看到:
1 |
|
翻译:
创建了两个全权限账户。
一个是root@localhost
,它没有密码,但需要系统 “root” 用户才能连接。例如,使用 sudo mysql。
第二个是mysql@localhost
,它也没有密码,但你必须是系统 “mysql” 用户才能连接。
连接后,如果您需要能够 以任何这些用户身份使用密码 且无需 sudo 进行连接,则可以设置密码。
3. 启动 MariaDB 服务
输入以下命令来启动 MariaDB
服务:
1 |
|
确认服务是否启动成功
1 |
|
如果输出中显示 Active: active (running)
就表示服务启动成功了。
4. 配置 MariaDB
根据 Archwiki 的建议:
The
mariadb-secure-installation
command will interactively guide you through a number of recommended security measures, such as removing anonymous accounts and removing the test database:
所以我们可以运行 mariadb-secure-installation
来进行安全配置:
1 |
|
1 |
|
这里我们直接回车,因为我们还没有设置密码。
1 |
|
这里我们选择 n
,因为它说 You already have your root account protected, so you can safely answer 'n'
,我们已经保护了 root 账户,所以可以安全地选择 n
。
1 |
|
Change the root password? [Y/n]
这一步询问你是否要更改 MariaDB 的 root 用户的密码。如果你想更改密码,就输入 “Y”,然后按回车键,系统会提示你输入新的密码。如果你不想更改密码,就输入 “n”,然后按回车键,系统会跳过更改密码的步骤。
我建议你设置密码,因为后面会使用到 mariadb -u root -p
来登录数据库,如果不设置会报错,只能用 sudo mariadb
来登录。
1 |
|
这里我们选择 Y
,因为这是一个安全措施,我们应该删除匿名用户。
1 |
|
选择 Y
,因为我们不希望 root 用户远程登录。可以配置反向代理或者 SSH 隧道来访问数据库。
1 |
|
这里我选择 Y
,不需要 test
数据库。
1 |
|
这里我们选择 Y
,重新加载权限表。
1 |
|
至此,我们已经完成了 MariaDB 的安全配置。
5. 使用 MariaDB
5.1 常用命令
启动 MariaDB 服务并设置服务开机自启:
1 |
|
查看 MariaDB 服务状态:
1 |
|
更新 MariaDB:
1 |
|
启动 MariaDB 服务:
1 |
|
停止 MariaDB 服务:
1 |
|
重启 MariaDB 服务:
1 |
|
开机启动 MariaDB 服务:
1 |
|
禁用 MariaDB 服务开机自启:
1 |
|
5.2 登录 MariaDB
1 |
|
或者
1 |
|
如果这里报错:ERROR 1698 (28000): Access denied for user 'root'@'localhost'
,那么你需要使用 sudo mariadb
来登录,或者重新运行 sudo mariadb-secure-installation
来设置密码。
5.3 查看数据库
1 |
|
命令行会输出:
1 |
|
现在,你可以开始使用 MariaDB
了。MariaDB
默认只提供命令行工具,你也可以使用 beekeeper-studio
或者 navicat
等图形化工具来管理数据库,增删改查非常方便。
5.4 数据库升级
Arch 是一个更新比较激进的发行版,我们有时候更新后会看见 MariaDB
的提示:
1 |
|
这时候我们就需要运行如下命令来升级数据库:
1 |
|
比如我在写这篇文章的时候,MariaDB
从 11.3.2-MariaDB
升级到了 11.4.2-MariaDB
,就运行了这个命令来升级数据库。Major version upgrade detected from 11.3.2-MariaDB to 11.4.2-MariaDB. Check required!
参考文章: