如何使用chmod作为mysql数据类型

Abe*_*llo 2 mysql types chmod

我目前正在创建一个权限表,它复制了linux中使用的"777"方法.

要做到这一点,我想创建一个像这样的表:

user_id,class1,class2,class3

哪些类可以是网站上需要权限的某些功能.

这看起来像是一个好方法吗?这种方法有问题吗?

此外,哪种数据类型最适合此数据.我可以使用INT(3),但我假设没有"二进制"数据类型可以复制这种类型的东西

Qua*_*noi 5

使用 set('ru', 'rg', ro', 'wu', 'wg', 'wo', 'xu', 'xg', 'xo', 'sgid', 'suid', 't')

这是位优化的.

但是,如果您需要过滤单个权限(例如"选择可以从此处读取的所有用户"),则最好将其实现为普通的多对多表:

user_permissions (object_id, user_id, permission ENUM ('r', 'w', 'x'))
group_permissions (object_id, group_id, permission ENUM ('r', 'w', 'x'))
other_permissions (object_id, permission ENUM('r', 'w', 'x', 'sgid', 'suid', 't'))
Run Code Online (Sandbox Code Playgroud)

在自己的记录中使用每个权限,创建PRIMARY KEY约束:

object_id, permission, user_id
object_id, permission, group_id,
object_id, permission
Run Code Online (Sandbox Code Playgroud)

和查询:

SELECT  u.id
FROM    user_permissions up
JOIN    users u
ON      u.id = up.user_id
WHERE   object_id = $object
        AND permission = 'r'
UNION
SELECT  g.user_id
FROM    group_permissions gp
JOIN    user_groups ug
ON      ug.group_id = gp.group_id
WHERE   object_id = $object
        AND permission = 'r'
UNION
SELECT  u.id
FROM    users u
JOIN    other_permissions op
ON      object_id = $object
        AND permission = 'r'
Run Code Online (Sandbox Code Playgroud)