Mysql 组的数据库架构

Mysql 组的数据库架构,mysql,database-design,database-schema,Mysql,Database Design,Database Schema,我有一个简单的用户和组数据库 用户:uid(pk),姓名,密码(不用担心普通的密码) 组:gid(pk)、名称、所有者\u uid 成员:uid(fk)、gid(fk)(一个用户可以属于多个组) 现在,我不信任我的数据库管理员,希望加密/保护特定列,以便db admin无法将任何现有uid添加到任何gid。如何修改scema以及应该加密哪个列 我有一个被认为是安全的加密密钥,我想利用sql查询,因此无法完成对表的加密并存储为blob 我认为您不能在数据库约束下执行此要求。你可以通过编程来管理它。

我有一个简单的用户和组数据库

用户:uid(pk),姓名,密码(不用担心普通的密码)

组:gid(pk)、名称、所有者\u uid

成员:uid(fk)、gid(fk)(一个用户可以属于多个组)

现在,我不信任我的数据库管理员,希望加密/保护特定列,以便db admin无法将任何现有uid添加到任何gid。如何修改scema以及应该加密哪个列


我有一个被认为是安全的加密密钥,我想利用sql查询,因此无法完成对表的加密并存储为blob

我认为您不能在数据库约束下执行此要求。你可以通过编程来管理它。但是,如果您编写一些触发器来处理它,您的(坏)管理员也可以访问触发器

成员
中添加一个额外的列,如
键信息

  • Insert
    :使用
    uid
    gid
    以及specificsalt组合生成哈希代码(如sha256Hex)。并用
    uid
    gid
    插入
    成员

  • 中,从
    成员
    中选择
    s:您有额外的困难。您应该选择具有正确哈希代码的记录(从
    成员


  • 如果您有一个庞大而复杂的salt,而您的管理员无法访问该salt(如您在评论中所述),则他/她无法找到编解码器算法。因此,如果他/她向
    成员
    中添加了一些记录,您的代码将忽略selects中添加的记录,因为
    键信息
    不能为真

    更改您的数据库管理员Ori eish I can’您应该使用散列系统,以便只有通过前端才能向数据库添加有效信息。您能否解释一下,您的管理员是否访问您的源代码、DLL或JAR?(可能使用反编译工具),或者只访问数据库?