oracle,创建⽤户,授予⽤户各种权限;ORA-01939错误;ORA-
01950错误;。。。
...
3个默认的⽤户:
sys orcl [as sysdba]
system orcl
scott tiger
创建⽤户:
create ur gis /*⽤户名*/ identified by gis /*密码*/ ;
PRIVILEGE:权限
系统权限:
世界上最贵的手机grant(revoke) create ssion to(from) gis;
grant(revoke) create table to(from) gis;
grant(revoke) unlimited tablespace to(from) gis;
grant create esion to public; #将权限授予所有⽤户。
lect * from ur_sys_privs; 查看当前⽤户的系统权限。
对象权限:
grant(revoke) lect on mytable to(from) gis;
grant(revoke) all on mytable to(from) gis;
lect * from ur_tab_privs; #查看当前⽤户的表的对象权限:
对象权限可以控制到列(只能插⼊和更新控制到列):
lect * from ur_col_privs; #查看当前⽤户的列的对象权限:
1) grant update(name) on mytable to sagittys; #在gis⽤户上将mytable表的name列更新权限给sagittys⽤户
able t name='laowang' where id=1;
commit;
2) grant inrt(id) on mytable to sagittys;
inrt able(id) values(7);
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
----- ------------------------------ ------------------------------ --
GIS SAGITTYS SA SAGITTYS FLASHBACK NO NO
GIS SAGITTYS SA SAGITTYS DEBUG NO NO
GIS SAGITTYS SA SAGITTYS QUERY REWRITE NO NO
GIS SAGITTYS SA SAGITTYS ON COMMIT REFRESH NO NO
GIS SAGITTYS SA SAGITTYS REFERENCES NO NO
GIS SAGITTYS SA SAGITTYS UPDATE #更新 NO NO
GIS SAGITTYS SA SAGITTYS SELECT #查询 NO NO
GIS SAGITTYS SA SAGITTYS INSERT #插⼊ NO NO
GIS SAGITTYS SA SAGITTYS INDEX #索引 NO NO
GIS SAGITTYS SA SAGITTYS DELETE #删除 NO NO
GIS SAGITTYS SA SAGITTYS ALTER #修改 NO NO
(在CMD中默认宽度到头了则不会规则的显⽰,此时将宽度设为400,t linesize 400,就ok了)
语⾔分类:
1、 DLL,数据定义语⾔
CREATE,CREATE TABLE abc(a varchar(10),b char(10));
ALTER,ALTER TABLE abc ADD c NUMBER; 加⼀个c的字段,数据符为NUMBER。ALTER TABLE abc DROP COLUMN c;
DROP,DROP TABLE abc
2、 DCL,数据控制语⾔
GRANT,授权 GRANT SELECT ON dept TO sde;#让sde⽤户可以选择dept表
REVOKE,授权收回 REVOKE SELECT ON dept FROM sde;
3、 DML,数据操作语⾔ (增删改查) 最后需要保存提交:commit;
SELECT, SELECT * FROM ABC;
INSERT, INSERT INTO ABC(A,B) VALUES(‘XF’,’SDE’);
DELETE, DELETE FROM ABC;删除表中所有数据。
DELETE FROM ABC WHERE A =’ORCL’;
UPDATE, UPDATE ABC SET B=’AAA’; 将表中B的数值全部改成AAA
UPDATE ABC SET B=’AAA’ WHERE A =’XF’;将A=XF⾏B值修改。
权限传递:
1、系统权限传递
爱国的名人名言
SYS⽤户将系统权限授予A⽤户,A⽤户将此权限授予B⽤户;
grant alter any table to gis;
如下显⽰:
USERNAME PRIVILEGE ADM
-------------------------- ----------
GIS ALTER ANY TABLE NO
#admin为no,说明不带有管理员选项,不能传递系统权限。
作出如下更改:
grant alter any table to gis with admin option;
则显⽰:
USERNAME PRIVILEGE ADM
-------------------------- ----------
GIS ALTER ANY TABLE YES
#admin为yes,此时带有管理员选项,可以传递系统权限。
同理,通过grant alter any table to sagittys with admin option;
可以让sagittys继续传递权限
此时,如果sys将授予GIS⽤户的ALTER ANY TABLE权限撤销了,sagittys依然拥有该权限。
2、对象权限传递对心理咨询的认识
A⽤户将对象权限授予B,B⽤户将此权限授予C⽤户;
与系统权限传递类似,⽤grant lect on mytable to sagittys with grant option;
可以将对象权限传递下去。
但是,如果GIS⽤户将lect on mytable权限撤销了,则之后传递的⽤户都没有该权限了。
⾓⾊管理
⾓⾊:权限的集合
create role myrole; 创建⾓⾊; drop role myrole; 删除⾓⾊;
grant create ssion to myrole;
grant create table to myrole; #给⾓⾊授权
grant myrole to gis; #将⾓⾊授予⽤户。
注意:有些系统权限很⾼很特殊,⽆法直接赋予⾓⾊。
如:unlimited tablespace/*权限太⼤了,可以使⽤任何的表空间,不要轻易使⽤*/
create table(包含下2⾏权限) create any table;
alter table (⽆此权限) alter any table
drop table (⽆此权限) drop any table /*加上any,可以修改(创建)其他⽤户的表*/表是属于某⼀个⽤户的,⽽⾓⾊不属于任意⼀个⽤户,是⼤家公⽤的。
丢失管理员的密码怎么办?
⽤sys管理员修改普通户⽤密码:
alter ur scott identified by tiger; #将scott⽤户密码改为tiger。
数据库的三种验证机制:
1、操作系统验证
2、密码⽂件验证
3、数据库验证
具有sysoper和sysdba⽤户可以在数据库还没启动的时候就连⼊数据库将之启动。
它们采⽤的是操作系统验证和密码⽂件验证。
linux下oracle的启动过程:
1、lsnrctl start #启动监听,接受⽤户请求。
2、sqlplus sys/orcl as sysdba #是DBA,采⽤操作系统验证和密码⽂件验证。
在低版本的oracle中只能这样:sqlplus/nolog /*启动sqlplus⽽不登陆*/
conn sya/orcl as sysdba;
3、startup #打开数据库实例
如果是普通⽤户,则只能⽤数据库验证,在实例没有打开之前是不可能启动的。
⽤sysdba连接数据库时,可以不输⼊⽤户密码直接登录,如sqlplus / as sysdba
这是因为,在计算机管理--⽤户和组--组中的ORA_DBA中默认存在当前的操作系统登陆者。
由于sysdba采⽤操作系统验证和密码⽂件验证,因此sqlplus默认当前操作系统管理员就是
oracle的DBA,除⾮将ORA_DBA组中的登录⽤户名删除。
当将ORA_DBA组中的登录⽤户名删除之后,sysdba只能采⽤第⼆种验证⽅式,即密码⽂件验证。此时如果sys的密码丢失了,
则在E:"oracle"product"10.2.0"db_1"databa中将a(密码⽂件)删掉
在cmd下输⼊orapwd,显⽰出提⽰:
Usage: orapwd file=<fname> password=<password> entries=<urs> force=<y/n>
file - name of password file (mand) 设置密码⽂件的路径
password - password for SYS (mand) 设置sys的密码
entries - maximum number of distinct DBA 设置DBA权限的最⼤数量
force - whether to overwrite existing file 询问是否强制覆盖,可不填写
具体如下:
orapwd file=E:"oracle"product"10.2.0"db_1"a password=orcl entries=10
此时重新⽣成了密码⽂件。
使⽤语句lect * from v$pwfile_urs; 可以看出在a中有多少特权⽤户。
完整的创建表的语句:
create ur abc identified by abc default tablespace urs temporary tablespace temp quota 50m on urs;在⽅案中查看⽤户的表的信息。
删除⽤户的时候,如果⽤户下有表存在,则只能强制删除:
drop ur sagittys cascade; /*cascade关键字表⽰删除⽤户所有对象*/
Oracle 10g 的创建⽤户名
1、 linux 下 oracle 的启动
以 oracle ⾝份登录五经博士
启动 lsnrctl start
登录 sqplus /nolog
连接数据库 connect /as sysdba
启动数据库 startup
关闭数据库 shutdown immediate
2、在数据中创建⽤户名
启动数据库后创建⽤户名
连接超级⽤户 connect system/admin system 系统⽤户名字 admin 密码
创建⽤户名字 create ur sha identified by admin ⽤户名: sha 密码 :admin
可以写 Default tablespace ur // 指定存储对象使⽤的默认空间表默认是 system
Temporary tablespace temp; // 保存临时对象所使⽤的空间表默认是 system
上⾯的俩⾏,可以写空间表为 ur 临时为 temp ;不写就默认
3、添加⽤户的权限
Grant 是授予权限的如:
Grant create ssion to sha ; // 授予 sha 连接数据的权限
系统权限如下:
系统特权允许执⾏的操作
Create ssion连接数据库
Create quence创建序列
Create synonym创建同名对象
Create table创建表
Create any table创建任何模式的表
Drop table删除表
Create procedure创建存储过程
Execute any procedure执⾏任何模式的存储过程
Create ur创建⽤户
Create view创建视图
Drop ur删除⽤户
Drop any table删除任何模式的表
4、向⽤户授予系统特权
Grant execute any procedure to sha with admin option
此句意思为为 sha ⽤户创建系统特权并且可以⽤ sha 为别的⽤户授予权限连接 sha ⽤户 connect sha/admin
可以创建别的⽤户
5 、查看⽤户权限
进⼊ sha ⽤户 connect sha/admin
Select * from ur_sys_privs; 可以查看到⼀个列表,
运动员营养列代表⽤户名权限是否可以给别的⽤户附加权限( N 、 Y )
⾏代表权限都有那些
6 、撤销⽤户授予的权限
必须连接 connect system/admin
撤销权限 revoke 是系统撤销权限的关键词
Revoke execute any procedure from sha ;
7 、更改⽤户密码
进⼊ sha ⽤户 connect sha/admin象棋棋盘怎么画
Password 输⼊旧密码输⼊新密码俩边 OK
或者⽤ alter ur sha identified by xinmima
8 、删除⽤户
Connect system/admin
Drop ur sha ;
9 、为⽤户授予⾓⾊
Grant dba to sha ;
Grant connect to sha ;
Linux 下的 plsql 创建⽤户
create ur sha identified by admin
Default tablespace ur
Temporary tablespace temp;
Granr unlimited tablespace to sha ; // 权限
Grant dba to sha ; // ⾓⾊
Grant connect to sha ;
创建⽤户
CREATE USER ur_name IDENTIFIED BY password;
DROP USER ur_name [cascade];--⽤户下有对象的时候,需要级联删除 ALTER USER ur_name ACCOUNT [UN]LOCK;
grant xxx to ur_name;
revoke xxx from ur_name;
grant create ssion to u3 identified by u3;
conn u3/u3----> disconnect---->conn
exit--->disconnect--->exit
kill⽤户会话信息:
lect urname,sid,rial# from v$ssion where urname='u3';
alter system kill ssion 'aa,bb';
修改⽤户在某个表空间上得配额:
alter ur u3 quota unlimited on urs;
什么是权限
权限就是⽤来控制特定的⽤户发送特定的SQL语句是否允许正确的执⾏在多⽤户环境,DBA需要维护数据库访问的安全
以确保特定⽤户拥有特定的操作权限
数据库的权限分为
系统权限
对象权限
系统权限
⼤部分是针对对象的创建,删除,修改,审计等等的操作
天津供热查看系统都具备哪些权限
lect distinct PRIVILEGE from dba_sys_privs;
create any table;
create table;
lect any table
lect
查看当前会话都具备哪些权限
lect * from ssion_privs;
对象权限---为DML做的⼀些权限(DML+执⾏)
对象的创建者、级联的委托权限、管理员才能授权
授予特定⽤户对特定对象的权限
特定对象:表、视图、序列、过程、函数、程序包上。
grant unlimited tablespace on u4;
grant lect p on u4;
⾓⾊--⼀个或者⼀组权限的集合
将⾓⾊授予⽤户,⽤户会具备⾓⾊中的所有权限
奶山羊养殖前景系统中有166个权限我们不便于管理
于是oracle对很多需求的权限定义成了⾓⾊的模式来⽅便我们管理
⾓⾊就是⼀组权限的集合
我们也可以⾃⼰建⽴包含⾃⼰拟定权限的⾓⾊
查看oracle给你定制了哪些⾓⾊
lect distinct GRANTEd_role from dba_role_privs ;
create role r1;
向⾓⾊添加或减少权限:
grant XXX to role_name;
revoke XXX from role_name;
⾓⾊的授予:
grant role_name to ur_name;
revoke role_name from ur_name;
普通⽤户查看⾃⼰具备的权限和⾓⾊:
lect * from ssion_privs;
lect * from ssion_roles;
管理员查看⽤户具备的权限和⾓⾊:
什么东西可以授予⽤户:
权限
⾓⾊
什么可以授予⾓⾊
权限
⾓⾊--这时候权限会累加