Skip to content

存储类型

LuckPerms 可以用多种方法存储它的数据。选项可以在配置文件的“存储设定(Storage Settings)”部分修改。

可用选项

  • 远程数据库 - 需要连接至单独运行的数据库
    • MySQL
    • MariaDB(略优于 MySQL)
    • PostgreSQL
    • MongoDB
  • 文件存储/本地数据库 - 无需额外步骤,“开箱即用”,但数据较难编辑。
    • H2(略优于 SQLite)
  • 可读&可编辑文本文件
    • YAML(.yml 文件)
    • JSON(.json 文件)
    • HOCON(.conf 文件)
    • TOML(.toml 文件)

使用的默认选项为 H2

远程数据库

优势劣势
允许数据在多个服务器之间共享搭建非常复杂
总体上可信度更高需要额外资源运行数据库
能处理更大量的数据,支持频繁读写
带有索引,处理批量查询与更新时效率更高

本地数据库

优势劣势
相比可编辑的文件存储方式更可信且高效较难直接编辑数据
带有索引,处理批量查询与更新时效率更高有时候会出现数据损坏的问题
数据不能跨服共享

文本(配置)文件

优势劣势
可读性强相较于使用文件数据库效率偏低
直接查询/编辑文件难以批量查询与更新数据
数据不能跨服共享
手动编辑数据时更易出错

更多细节

文件/本地数据库(H2&SQLite)

  • 所有权限数据都存在 LuckPerms 文件夹下的一个文件中
  • 不能像 YAML 或 JSON 文件那样被轻易编辑
  • 必须使用插件的命令才可浏览或编辑数据

在使用 H2 的情况下,所有数据都存在 luckperms-h2.mv.db 文件中。 在使用 SQLite 的情况下,所有数据都存在 luckperms-sqlite.db 文件中。

若要使用这些选项,可按如下内容分别设置:

YAML
storage-method: h2
# 或者使用 SQLite
storage-mathod: sqlite

可读&可编辑文件(YAML/JSON/HOCON/TOML)

  • 数据存储在 LuckPerms 的多个文件中
  • 文件可以在服务器运行时编辑,所作改动会被自动应用。

在设置为 YAML 的情况下,数据会存储在 yaml-storage 文件夹下的 .yml 文件中。 在设置为 JSON 的情况下,数据会存储在 json-storage 文件夹下的 .json 文件中。 在设置为 HOCON 的情况下,数据会存储在 hocon-storage 文件夹下的 .conf 文件中。 在设置为 TOML 的情况下,数据会存储在 toml-storage 文件夹下的 .toml 文件中。

这些存储类型中的格式大致相同,部分因语法差异而略有区别。

部分示例文件可以在文末找到。

若要使用这些选项,可按如下内容分别设置:

YAML
# 使用 yaml 格式的文件存储
storage-method: yaml
# 使用 json 格式的文件存储
storage-method: json
# 使用 hocon 格式的文件存储
storage-method: hocon
# 使用 toml 格式的文件存储
storage-method: toml

远程数据库(MySQL/MariaDB/PostgreSQL/MongoDB)

你需要在配置文件中填入数据库服务器的地址、端口、数据库名以及用户名和密码。

若要存储大量数据,则我们会推荐你使用这个,或者考虑扩展一个服务器网络。若你已经在运行多个服务器且想在服务器之间同步数据,那么你就需要使用其中一种的远程数据库。

数据库结构可在这里找到。

若要使用这些选项,可按如下内容分别设置:

YAML
# 使用 mysql 数据库存储
storage-method: mysql
# 使用 mariadb 数据库存储
storage-method: mariadb
# 使用 postgresql 数据库存储
storage-method: postgresql
# 使用 mongodb 数据库存储
storage-method: mongodb

示例文件

示例 YAML 文件

YAML
uuid: c1d60c50-70b5-4722-8057-87767557e50d
name: Luck
primary-group: default
permissions:
- test.permission:
    value: true
    context:
      server: factions
- negated.permission.example:
    value: false
- special.test.perm
- special.test.permission
parents:
- default
prefixes:
- '&c[Admin] ':
    priority: 10
meta:
- homes:
    value: '10'

示例 JSON 文件

JSON
{
  "uuid": "c1d60c50-70b5-4722-8057-87767557e50d",
  "name": "Luck",
  "primaryGroup": "default",
  "permissions": [
    {
      "permission": "test.permission",
      "value": true,
      "context": {
        "server": "factions"
      }
    },
    {
      "permission": "negated.permission.example",
      "value": false
    },
    {
      "permission": "special.test.perm",
      "value": true
    },
    {
      "permission": "special.test.permission",
      "value": true
    }
  ],
  "parents": [
    {
      "group": "default"
    }
  ],
  "prefixes": [
    {
      "prefix": "&c[Admin] ",
      "priority": 10
    }
  ],
  "meta": [
    {
      "key": "homes",
      "value": "10"
    }
  ]
}

示例 HOCON 文件

uuid=c1d60c50-70b5-4722-8057-87767557e50d
name=Luck
primary-group=default
permissions=[
    {
        permission="test.permission"
        value=true
        context {
            server=factions
        }
    },
    {
        permission="negated.permission.example"
        value=false
    },
    {
        permission="special.test.perm"
        value=true
    },
    {
        permission="special.test.permission"
        value=true
    }
]
parents=[
    {
        group=default
    }
]
prefixes=[
    {
        prefix="&c[Admin] "
        priority=10
    }
]
meta=[
    {
        key=homes
        value="10"
    }
]

示例 TOML 文件

TOML
uuid = "c1d60c50-70b5-4722-8057-87767557e50d"
name = "Luck"
primary-group = "default"

[[permissions]]
  permission = "test.permission"
  value = true

  [permissions.context]
    server = "factions"

[[permissions]]
  permission = "negated.permission.example"
  value = false

[[permissions]]
  permission = "special.test.perm"
  value = true

[[permissions]]
  permission = "special.test.permission"
  value = true

[[parents]]
  group = "default"

[[prefixes]]
  prefix = "&c[Admin] "
  priority = 10

[[meta]]
  key = "homes"
  value = "10"