wyqjx 2024-09-25 10:01 采纳率: 0%
浏览 2

gorm select权限跟随 grant 授权动态变化

项目使用gin,gorm
当项目运行时,我在mysql 里取消 select 权限,
可是gorm 依旧拥有 mysql的select权限,
请问如何做到,我撤消权限后,在go 不重启的情况下,gorm也没有select权限

  • 写回答

1条回答 默认 最新

  • 关注

    上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    GORM在删除连接(断开连接)或关闭数据库连接时会自动清理所有表以及其数据。如果你想永久性的禁用对特定数据库的select权限,你可以考虑如下步骤:

    1. 使用断言和db.Connect(false)来切断对特定数据库的连接。
    2. 在你的主应用代码中,关闭所有的GORM相关的连接。

    首先,你需要确认是否已经从数据库中移除了数据库连接。以下是在Go程序中实现这一点的一个例子:

    func RemoveDBConnection(db *gorm.DB) {
        db.Connect(false)
    }
    

    然后,在主应用代码中,通过调用上述方法来清除所有的GORM相关连接:

    func main() {
        RemoveDBConnection(db)
    
        // 在这里执行其他业务逻辑
    }
    

    以上步骤可以在不重启应用程序的情况下永久性地移除对特定数据库的select权限。注意:这种方法可能会导致查询失败或数据丢失。如果只是临时禁用查询权限,那么可以尝试禁用接口,而不是整个表格,例如:

    var user models.User
    
    func RemoveUserPermission(db *gorm.DB) error {
        // 删除用户接口
        db.Find(&user).Delete()
        
        return nil
    }
    
    func main() {
        RemoveUserPermission(db)
        
        // 在这里执行其他业务逻辑
    }
    

    这将只在当前应用程序中禁止对特定用户的数据操作。如果需要在整个应用程序中禁用这些操作,你可能需要重新考虑如何更优雅地处理数据流。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月25日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?