我创建了一个新的数据库架构作为“company_security”,并使用非常流行的 Company-Employee 表的表结构填充数据库,其中包含 DEPARTMENT、DEPENDENT、DEPT_LOCATIONS、EMPLOYEE、PROJECT 和 WORKS_ON 表。然后我在根用户会话中创建了一个新用户,
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password1'
我想做的是在 EMPLOYEE 和 user1 的 WORKS_ON 上创建一个视图 WORKS_ON1(Fname,Lname,Pno) 。为此,我首先以 root 身份向 user1 授予必要的权限,如下所示。
GRANT SELECT ON company_security.WORKS_ON TO 'user1'@'localhost'
GRANT SELECT company_security.EMPLOYEE TO 'user1'@'localhost'
GRANT CREATE VIEW ON company_security.* TO 'user1'@'localhost'
Run Code Online (Sandbox Code Playgroud)
然后我刷新了权限,这是输出SHOW GRANTS for 'user1'@'localhost'
然后我尝试从 user1 创建视图,
CREATE VIEW WORKS_ON1 AS select Fname,Lname,Pno from EMPLOYEE,WORKS_ON;
Run Code Online (Sandbox Code Playgroud)
但我遇到了这样的错误,
ERROR 1142 (42000): CREATE VIEW command denied to user 'user1'@'localhost' for table 'WORKS_ON1'
Run Code Online (Sandbox Code Playgroud)
我在 MySQL 论坛中发现了类似的问题,但他在解决方案中提到的 MySQL …