视图创建时的权限问题

阅读tom的书时,实验环境需要建立一个收集状态信息的视图。

test@ORCL> create or replace view stats as
2 select 'STAT...' || a.name name,b.value
3 from v$statname a,v$mystat b
4 where a.STATISTIC#=b.STATISTIC#
5 union all
6 select 'LATCH...'|| name,gets
7 from v$latch
8 /

create or replace view stats as
select 'STAT...' || a.name name,b.value
from v$statname a,v$mystat b
where a.STATISTIC#=b.STATISTIC#
union all
select 'LATCH...'|| name,gets
from v$latch

ORA-01031: insufficient privileges

尝试给用户xezf赋权限

sys@SQL> grant select on v$statname to xezf;
grant select on v$statname to xezf
                *
ERROR at line 1:
ORA-02030: can only select from fixed tables/views

[oracle@station3 ~]$ oerr ora 2030
02030, 00000, "can only select from fixed tables/views"
// *Cause: An attempt is being made to perform. an operation other than
//         a retrieval from a fixed table/view.
// *Action: You may only select rows from fixed tables/views.

对于fixed tables/view 只能检索数据,不能进行其他的操s@作。怎么办呢?

我们知道v$是v_$的同义词,试试对v_$赋权限怎么样?

sys@ORCL> grant select on v_$statname to xezf;

Grant succeeded.

sys@ORCL> grant select on v_$mystat to xezf;

Grant succeeded.

sys@ORCL> grant select on v_$latch to xezf;

Grant succeeded.

OK,可以grant。 再尝试建立视图。

test@ORCL> create or replace view stats as
2 select 'STAT...' || a.name name,b.value
3 from v$statname a,v$mystat b
4 where a.STATISTIC#=b.STATISTIC#
5 union all
6 select 'LATCH...'|| name,gets
7 from v$latch
8 ;

View created

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24104518/viewspace-715547/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24104518/viewspace-715547/

数据库创建视图遇到“权限不足”的错误,通常是因为当前用户没有被授予创建视图权限。以下是针对不同数据库系统的解决方法: ### Oracle 数据库Oracle 数据库中,如果某个用户(例如 `scott`)没有创建视图权限,可以通过以下步骤解决: 1. **以 DBA 用户登录** 使用具有 DBA 权限的账户登录数据库,例如 `sys` 或 `system`: ```sql sqlplus / as sysdba ``` 2. **授予创建视图权限** 为指定用户(如 `scott`)授予创建视图权限: ```sql GRANT CREATE VIEW TO scott; ``` 3. **切换回目标用户并尝试创建视图** 以 `scott` 用户身份登录并尝试创建视图: ```sql CONNECT scott/tiger ``` 然后执行创建视图的语句: ```sql CREATE OR REPLACE VIEW emp_view AS SELECT * FROM emp; ``` 通过以上步骤,可以解决 Oracle 中因权限不足导致的视图创建失败问题[^1]。 ### MySQL 数据库 在 MySQL 中,创建视图需要用户拥有 `CREATE VIEW` 权限。如果当前用户没有该权限,可以通过以下方式解决: 1. **以具有管理员权限的用户登录 MySQL** 使用具有全局权限的账户(如 `root`)登录: ```bash mysql -u root -p ``` 2. **授予创建视图权限** 为指定用户授予创建视图权限。例如,为用户 `test_user` 授予对数据库 `test_db` 的视图创建权限: ```sql GRANT CREATE VIEW ON test_db.* TO 'test_user'@'localhost'; ``` 如果需要授予所有数据库视图创建权限: ```sql GRANT CREATE VIEW ON *.* TO 'test_user'@'localhost'; ``` 3. **刷新权限** 执行以下命令使权限生效: ```sql FLUSH PRIVILEGES; ``` 4. **使用目标用户登录并创建视图** 以目标用户身份登录 MySQL 并尝试创建视图: ```sql CREATE VIEW customer_view AS SELECT name, email FROM customers; ``` 通过上述步骤,可以解决 MySQL 中因权限不足导致的视图创建失败问题[^2]。 ### 其他注意事项 - 在某些数据库系统中,除了 `CREATE VIEW` 权限外,用户还需要对涉及的基础表具有 `SELECT` 权限。 - 如果使用的是云数据库服务(如 AWS RDS、阿里云 RDS),可能需要通过控制台或特定的管理账户进行权限调整。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值