赞
踩
假设我有一个表,其中包含应用程序的不同用户插入的记录。如何授予特定用户访问权限,使其仅查看该表中的记录?我已经考虑过VIEW
用他/她的记录创建一个,但是我不知道如何创建一个只能看到该用户的mysql用户VIEW
。
那么,是否有可能创建一个只能访问单个MySQL用户的mysql-user VIEW
?还可以使该用户成为只读用户VIEW
吗?
解决办法:
GRANT SELECT ON database1.view1 TO 'someuser'@'somehost';
比如:
创建用户:
create user 'show_root2'@'%' identified by '123456'
授权(dd_user是视图名称):
GRANT SELECT ON saas_db.dd_user TO 'show_root2'@'%';
如何在mysql视图中动态传值:
可以将此解决方案与函数一起使用 -
- CREATE FUNCTION func() RETURNS int(11)
- RETURN @var;
-
- CREATE VIEW view1 AS
- SELECT * FROM table1 WHERE id = func();
使用示例:
- SET @var = 1;
- SELECT * FROM view1;
只需创建不带参数的视图(即仅处理连接):
- CREATE VIEW MYVIEW AS (
- SELECT A.FNAME
- , A.LNAME
- , B.EMAIL
- , A.EID AS EID
- , B.EMAILTYP AS EMAILTYP
- FROM EMPLOYEE A, EMPEMAIL B
- WHERE A.EID = B.EID)
在查询时应用动态参数:
- SELECT FNAME, LNAME, EMAIL
- FROM my_view
- WHERE eid = :empId AND emailtyp = :emailType
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。