Vaultwarden Wiki 中文版
⮐ Vaultwarden Wiki个人主页联系我
  • 关于
  • 首页
  • FAQ
    • 1.FAQ
    • 2.审计
    • 故障排除
      • 1.Bitwarden Android 故障排除
  • 容器镜像的使用
    • 1.容器镜像的选择
    • 2.启动容器
    • 3.更新 Vaultwarden 镜像
    • 4.使用 Docker Compose
    • 5.使用 Podman
  • 部署
    • 1.构建您自己的镜像
    • 2.构建二进制
    • 3.预构建二进制
    • 4.第三方包
    • 5.部署示例
    • 6.代理示例
    • 7.转储示例
    • HTTPS
      • 1.启用 HTTPS
      • 2.使用 Let's Encrypt 证书运行私有 Vaultwarden 实例
  • 配置
    • 1.配置概述
    • 2.禁用新用户注册
    • 3.禁用邀请
    • 4.启用管理页面
    • 5.禁用管理令牌
    • 6.启用 WebSocket 通知
    • 7.启用移动客户端推送通知
    • 8.启用 U2F 和 FIDO2 WebAuthn 身份验证
    • 9.启用 YubiKey OTP 身份验证
    • 10.更改持久性数据位置
    • 11.更改 API 请求大小限制
    • 12.更改 worker 数量
    • 13.SMTP 配置
    • 14.显示密码提示
    • 15.禁用或覆盖密码库接口托管
    • 16.日志记录
    • 17.设置为 systemd 服务
    • 18.从 LDAP 同步用户
    • 19.使用备用基本目录(子目录/子路径)
    • 20.其他配置
    • *使用 systemd docker 运行
    • 数据库
      • 1.使用 MariaDB (MySQL) 后端
      • 2.使用 PostgreSQL 后端
      • 3.在未启用 WAL 的情况下运行
      • 4.从 MariaDB (MySQL) 迁移到 SQLite
    • 安全
      • 1.强化指南
      • 2.Fail2ban 设置
      • 3.Docker Traefik ModSecurity 设置
    • 其他
      • 1.翻译电子邮件模板
      • 2.翻译管理页面
      • 3.自定义 Vaultwarden CSS
  • 备份
    • 1.通用(非 docker)
  • 其他
    • 1.从 Keepass 或 KeepassX 导入数据
    • 2.备份您的密码库
    • 3.与上游 API 实现的区别
    • 4.支持上游的发展
    • 5.使用 Cloudflare DNS 的 Caddy 2.x
    • 6.Git hooks
    • *使用非 root 用户运行 docker 容器
    • *使私有 CA 和自签名证书兼容 Chrome
    • *测试 SSO
由 GitBook 提供支持
在本页
  • 常规
  • 如何从 MariaDB 迁移到 SQLite
  1. 配置
  2. 数据库

4.从 MariaDB (MySQL) 迁移到 SQLite

上一页3.在未启用 WAL 的情况下运行下一页安全

最后更新于1个月前

对应的

⚠️ ☠️ ⚠️ 使用这些命令的风险自负!⚠️ ☠️ ⚠️

在做任何可能破坏整个密码库的事情之前,请务必创建备份!


常规

Vaultwarden 最初设计时仅使用 SQLite,但后来又加入了MariaDB(MySQL)和PostgreSQL。对于 SQLite,您不需要运行单独的服务器或容器,而对于其他两个,您确实需要运行一些额外的东西。

现在,如果您一开始使用的是 MariaDB,但又想回到 SQLite,该怎么办呢?嗯,这是可能的,但是使用以下步骤可能会出现一些我们不知道的奇怪故障。如果您遇到任何奇怪的问题然后需要帮助,或者您解决了这些问题,请在此处开启一个新的讨论:,以帮助您和其他人。

如何从 MariaDB 迁移到 SQLite

确保您对 SQLite 和 MariaDB 使用的是相同版本的 Vaultwarden(Docker 或自定义构建),不要在这些步骤之间更新 Docker 镜像。要迁移到 SQLite,我们首先需要有一个 SQLite 数据库文件,我们可以用它来传输数据。要创建此文件,您需要停止当前的 Vaultwarden 实例,并将其配置为使用 SQLite。例如,您可以通过将 DATABASE_URL 从 DATABASE_URL=mysql://<vaultwarden_user>:<vaultwarden_pw>@mariadb/vaultwarden 更改为 DATABASE_URL=/data/db.sqlite3 来实现。( /data 是您使用的 -v 值的 Docker 容器内的内部路径)。

更改此配置后,启动 Vaultwarden,检查以 Executing migration script ..... 开头的行的日志信息,这些信息显示它执行了一些迁移。

现在再次停止 Vaultwarden,以便您可以开始迁移过程。需要 MariaDB 的数据库主机和凭据才能继续。

现在运行以下单行程序并将 <dbhost>、<dbuser> 以及 <database> 调整为您用于 MariaDB 连接的实际内容:

mysqldump \
  --host=<dbhost> \
  --user=<dbuser> --password \
  --skip-create-options \
  --compatible=ansi \
  --default-character-set=utf8 \
  --skip-extended-insert \
  --compact \
  --single-transaction \
  --no-create-db \
  --no-create-info \
  --hex-blob <database> \
  | grep -a "^INSERT INTO" | grep -a -v "__diesel_schema_migrations" \
  | sed 's#\\"#"#gm' \
  | sed -sE "s#,0x([^,]*)#,X'\L\1'#gm" \
   > mysql-to-sqlite.sql

系统会提示您输入密码,输入密码然后按回车键。

这一步将生成一个用于包含您的数据库的 mysql-to-sqlite.sql 文件。现在查找上一步中在您第一次使用 SQLite 作为数据库启动 Vaultwarden 时由 Vaultwarden 创建的 db.sqlite3 文件。复制或移动 mysql-to-sqlite.sql 到与 db.sqlite3 于同一目录中。现在您可以执行以下命令:

sqlite3 db.sqlite3 < mysql-to-sqlite.sql

这一步将使用转储填充 SQLite 数据库,您现在可以使用 SQLite 而非 MySQL 再次启动 Vaultwarden 了。

官方页面地址
https://github.com/dani-garcia/vaultwarden/discussions