有没有办法创建用户特定的表;“指针”;在MySQL中? 问题:
有没有一种方法可以让用户的视图有没有办法创建用户特定的表;“指针”;在MySQL中? 问题:,mysql,Mysql,有没有一种方法可以让用户的视图PERSON指向某个主要的PERSON表,让我们称之为main\u PERSON,也可以为用户jill创建一个视图PERSON,并让它指向同一个main\u PERSON表,区别在于,杰克只能接近男人,吉尔只能接近女人 细节: 下面是我想如何设置我的表/视图 人员表: CREATE TABLE IF NOT EXISTS person ( id INT NOT NULL auto_increment, male B
PERSON
指向某个主要的PERSON表,让我们称之为main\u PERSON
,也可以为用户jill
创建一个视图PERSON
,并让它指向同一个main\u PERSON
表,区别在于,杰克只能接近男人,吉尔只能接近女人
细节:
下面是我想如何设置我的表/视图
人员表:
CREATE TABLE IF NOT EXISTS person
(
id INT NOT NULL auto_increment,
male BOOLEAN,
PRIMARY KEY(id)
)
engine=innodb;
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';
杰克的视图:
CREATE TABLE IF NOT EXISTS person
(
id INT NOT NULL auto_increment,
male BOOLEAN,
PRIMARY KEY(id)
)
engine=innodb;
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';
吉尔的视图:
CREATE TABLE IF NOT EXISTS person
(
id INT NOT NULL auto_increment,
male BOOLEAN,
PRIMARY KEY(id)
)
engine=innodb;
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';
创建用户并授予特权:
CREATE TABLE IF NOT EXISTS person
(
id INT NOT NULL auto_increment,
male BOOLEAN,
PRIMARY KEY(id)
)
engine=innodb;
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';
动机:
我想让不同的用户只访问行的子集。据我所知,这是视图的目的之一(另一个目的是将多个表组合在一起)。一、 但是,我不希望使用模糊的视图名称,例如仅用于_jacks\u eyes\u的,因此我希望使用特定于用户的本地名称。如果这是使用视图的错误方式,请有人帮我指出正确的方向。不,没有。表和视图只有一个全局名称空间;无法使用相同的名称创建多个视图 但是,我相信您可以声明一个视图,其输出取决于当前用户:
CREATE VIEW limited_person AS
SELECT * FROM person
WHERE person.male = (USER() = 'jack@localhost')
谢谢,这将是我的下一个问题:
USER()。