1535 字
4 分钟
好用,爱用:MariaDB在Arch linux的使用方法
2026-05-06

为什么选择 MariaDB?#

MariaDB 是 MySQL 的“亲兄弟”(由原始团队创建),完全兼容 MySQL,但在性能、安全性和开源生态上更进一步

  • 线程池:高并发下比 MySQL 默认模式更省资源
  • 存储引擎增强:Aria、InnoDB 持续优化
  • 更多实用功能:窗口函数、并行复制、更灵活的权限管理
  • 活跃社区:完全开源,无商业收购风险

无论是运行 Minecraft 群服、还是小型应用,MariaDB 都是替代 MySQL 的绝佳选择


在 Arch Linux 上安装 MariaDB#

俩主力机都是Arch Linux

更新系统并安装#

更新系统可参考我的(另一篇文章)

安装Mariadb

sudo pacman -S mariadb

初始化数据库目录#

sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

启动服务并设置开机自启#

sudo systemctl enable --now mariadb

设置开机自启以免得我每次启动群服前都需要手动启动Mariadb

运行安全配置向导#

sudo mysql_secure_installation

按照提示,我依次设置了:

  • 设置 root 密码
  • 移除匿名用户(选 Y
  • 禁止 root 远程登录(选 Y
  • 删除测试数据库(选 Y
  • 重新加载权限表(选 Y
TIP

每一步都有详细说明,看不懂英文的话有翻译软件或喂给AI

登录 MariaDB 控制台#

mariadb -u root -p

输入刚才设置的 root 密码,看到 MariaDB [(none)]> 提示符即成功


创建数据库和用户#

创建一个新数据库#

CREATE DATABASE mysql_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • utf8mb4:支持完整 Unicode 字符(包括表情符号)
  • 你可以把 mysql_db 改成任意名字,比如 mc-lp

创建一个专用用户#

CREATE USER 'mc_user'@'localhost' IDENTIFIED BY '密码';
  • 'mc_user'@'localhost' 表示该用户只能从本机连接(毕竟服务器运行在本地,数据库也一样)
  • 需要远程访问的话,可将 localhost 换成其IP

给用户授予该数据库的所有权限#

GRANT ALL PRIVILEGES ON mysql_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
IMPORTANT

这里只授予了 mysql_db 库的权限,用户无法操作其他数据库。

验证用户权限#

SHOW GRANTS FOR 'app_user'@'localhost';

你会看到类似 GRANT ALL PRIVILEGES ON mysql_db.* TO ... 的输出。


Mariadb刷新权限状态与分号#

刷新权限:FLUSH PRIVILEGES#

FLUSH PRIVILEGES;

这条命令的作用是重新加载权限表,让所有更改立即生效,作为日常操作习惯,一般会在 GRANT 之后加上它,以确保没啥小问题:

GRANT ALL ON mysql_db.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
TIP

在 MariaDB 10.x 及以上版本,GRANT 等语句会自动触发权限刷新,通常不需要额外执行 FLUSH PRIVILEGES。但在操作时加上它也不是坏事,完成更改后还是刷新一下比较好

2. 分号 ;#

在 MariaDB 控制台(或mysql 命令行客户端)中,分号 ; 表示一条 SQL 语句的结束符。你可以分多行写,直到输入分号后按回车,系统才会执行该语句

如果没有分号,MariaDB 会认为你还在继续输入,不会执行

emm,好几次都直接回车忘了写分号了😅

NOTE

如果忘记写分号,命令行会一直显示 -> 提示你继续输入,输入分号后按回车即可执行
mariadb对命令的大小写不敏感,但对用户名和库表名是敏感的🤓😅

删除数据库与用户#

CAUTION

删除操作不可逆,请在执行前确认数据已备份或不再需要

删除操作#

删除一个数据库

DROP DATABASE mysql_db;

执行后该数据库及内部所有表、数据将被永久删除

删除一个用户

DROP USER 'mysql_user'@'localhost';

查看现有用户/数据库#

用户

SELECT User, Host FROM mysql.user;

数据库

show databases;

可以确认你要删除的用户/数据库是否存在


接入MariaDB#

以 Minecraft LuckPerms 插件为例

LuckPerms 是一个流行的权限管理插件,支持 MariaDB 存储权限数据,我的群服会用到权限同步(还得是数据库方便,传统的手动一个一个改还是太累了)

plugins/LuckPerms/config.yml
一般用vim编辑该文件:
既然有GUI了,我用kite文本编辑器也行,但Vim好用啊

vim plugins/LuckPerms/config.yml

找到 storage-methoddata 段,修改为:

storage-method: mariadb
data:
address: localhost:3306
database: lp-sql # 数据库名
username: mcserver # 用户名
password: ************* # 密码
pool-size: 10 # 连接池注释上说一般不改
TIP

保存并退出(Vim):
ESC后,写入****即可
像kite一样的GUI文本编辑器就Ctrl+S或有个保存的小图标

然后重启服务器就行

服务日志应该有:

[LuckPerms] Successfully connected to MariaDB database.

然后就没啥事了
子服和主服的配置一样


迁移与备份#

迁移数据库#

经历:有换过新电脑,把旧服务器的 LuckPerms 权限数据完整迁移到新服务器上,导出再导入

在旧电脑上导出数据库

mariadb-dump -u root -p mysql_db > lp_backup.sql

lp_backup.sql传到新电脑后,在新电脑上导入备份文件即可

mysql -u root -p mysql_db < lp_backup.sql

输入 root 密码,没有报错提示即成功

验证数据,最后再看一下表里有没有数据就行

备份与恢复#

备份整个数据库

mariadb-dump -u root -p mysql_db > backup_$(date +%Y%m%d).sql

恢复数据库(前提是数据库已存在)

mysql -u root -p mysql_db < backup_20260506.sql
WARNING

恢复会覆盖现有数据,请确保是你想要的操作


简单管理命令#

忘了或懒得手动敲了的话,可以复制🤓

查看所有数据库

SHOW DATABASES;

查看所有用户

SELECT User, Host FROM mysql.user;

切换到某个数据库

USE mysql_db;

查看当前数据库的所有表

SHOW TABLES;

查看当前连接的用户

SELECT USER();

常见问题#

错误提示可能原因解决方法
Access denied for user密码错误或用户不存在检查用户名、密码、主机(localhost
Can't connect to MySQL server on 'localhost'MariaDB 服务未启动sudo systemctl start mariadb
Unknown database 'xxx'数据库未创建先用 CREATE DATABASE xxx; 创建
ERROR 2002 (HY000): Can't connect...服务未运行或 socket 路径错误sudo systemctl status mariadb 查看状态
导入备份时提示 Unknown collation新旧 MySQL/MariaDB 版本不兼容编辑 sql 文件,将 utf8mb4_0900_ai_ci 等新排序规则改为 utf8mb4_unicode_ci

大部分问题可以去官方文档,写的很详细


其它#

好像没写mariadb的配置文件优化,但是一般不改也很够用了

MariaDB 不仅适用于 Minecraft 服务器,也适用于任何需要关系型数据库的场景

参考延伸

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

好用,爱用:MariaDB在Arch linux的使用方法
https://text.lilystar.cn/posts/mariadb/
作者
Lily
发布于
2026-05-06
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录