gpt4 book ai didi

mysql - 有没有办法在 MySQL 中创建用户特定表 "pointers"?

转载 作者:行者123 更新时间:2023-11-29 07:00:34 25 4
gpt4 key购买 nike

问题:

有没有办法让用户 jack 的 View PERSON 指向某个主要人员表,我们称它为 MAIN_PERSON 并创建用户 jill 的 View PERSON 并让它指向相同的 MAIN_PERSON 表,例如,区别在于 jack 只能访问男性,jill 只能访问女性。

详情:

这是我想如何设置我的表/ View

PERSON 表:

CREATE TABLE IF NOT EXISTS person
(
id INT NOT NULL auto_increment,
male BOOLEAN,

PRIMARY KEY(id)
)
engine=innodb;

jack 的观点:

CREATE VIEW person_for_jacks_eyes_only
AS
SELECT * FROM person
WHERE
person.male = TRUE;

吉尔的观点:

CREATE VIEW person_for_jills_eyes_only
AS
SELECT * FROM person
WHERE
person.male = false;

创建用户并授予权限:

GRANT SELECT ON DB.person_for_jacks_eyes_only TO jack@'localhost' IDENTIFIED BY '1234';
GRANT SELECT ON DB.person_for_jills_eyes_only TO jill@'localhost' IDENTIFIED BY '1234';

动机:

我只想让不同的用户访问的一个子集。据我了解,这是 View 的目的之一(另一个是将多个表组合在一起)。但是,我不想使用像 person_for_jacks_eyes_only 这样晦涩难懂的 View 名称,因此我想制作用户特定的 local 名称。如果这是使用 View 的错误方式,请有人为我指明正确的方向。

最佳答案

不,没有。表和 View 有一个全局命名空间;无法创建具有相同名称的多个 View 。

不过,我相信您可以声明一个 View ,其输出取决于当前用户:

CREATE VIEW limited_person AS
SELECT * FROM person
WHERE person.male = (USER() = 'jack@localhost')

关于mysql - 有没有办法在 MySQL 中创建用户特定表 "pointers"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10377031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com