【问题标题】:Does GORM support working with encrypted SQLite DB?GORM 是否支持使用加密的 SQLite DB?
【发布时间】:2021-06-23 09:11:27
【问题描述】:

我需要为我的 Go 应用程序使用 ORM,它可以连接到 postgreSQL 数据库或 SQLite 数据库。

gorm 的文档没有提到任何关于连接到加密的 sqlite 数据库的内容。

是否可以使用它或以任何方式为 sqlite 提供自定义驱动程序,该驱动程序将与加密的 SQlite DB 一起使用?

更新

根据 Ezequiel Muns 的评论,我更新了 gorm SQLite 驱动程序代码以使用 github.com/mutecomm/go-sqlcipher

这个新的 GORM 驱动可以在here找到。

干杯!!

【问题讨论】:

标签: sqlite go orm go-gorm


【解决方案1】:

Gorm 使用一个驱动系统来调整各个数据库客户端以供其使用。

您必须创建一个新模块来复制 go-gorm/driver/sqlite 的源代码,但更新 https://github.com/go-gorm/sqlite/blob/master/sqlite.go#L8 以导入您选择的备用库。由于这些是 fork 并且它们符合数据库/sql 接口,因此它应该可以正常工作。然后你就可以在 gorm 中正常使用这个新驱动了:

import (
    "gorm.io/gorm"
    sqliteEncrypt "path.to/your/gorm-sqlite-encrypt"
)

db, err := gorm.Open(sqliteEncrypt.Open("file:dbFileName?_crypto_key=auxten"), gorm.Options{})
if err != nil {
    panic("failed to connect database")
}
// ...

注意:您可以尝试通过使用go.mod replace directive 来避免更新go-gorm/driver/sqlite 中的任何源,但我不知道这如何与本身没有@987654327 的CGO 模块一起使用@文件与您链接的两个库一样。

【讨论】:

  • 这很好用!!太感谢了。我已根据您的建议编辑了问题,以包括我创建的驱动程序,该驱动程序现已发布,可供寻求相同内容的其他人使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多