Linux系统下连接Oracle数据库,创建新的数据库用户及分配权限

来源:互联网 发布:装修花费知乎 编辑:程序博客网 时间:2024/05/15 04:54
一、打开SecureCRT5.1,连接到虚拟机服务器192.168.234.181


用户名/口令 root/123456


1.从root用户切换到oracle用户
[root@oradb ~]# su - oracle


2.用sysdba用户登陆sqlplus
[oracle@oradb ~]$ sqlplus / as sysdba


SQL*Plus: Release 11.2.0.3.0 Production on Tue Nov 1 18:28:10 2016


Copyright (c) 1982, 2011, Oracle.  All rights reserved.




Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options




3创建新的数据库用户hzpplsql口令hzpplsql
SQL> create user hzpplsql identified by hzpplsql 
  2  ;


User created.


4.此时尝试用刚创建的用户hzpplsql登陆:报错缺少权限。拒绝登陆。
补充:我们新建立一个用户之后,如果未进行任何权限的赋予,该用户甚至连登录的权限都没有。此时,我们需要赋予该用户create session的系统权限(或者connect角色),才能实现登录。


SQL> conn hzpplsql/hzpplsql@orcal
ERROR:
ORA-01045: user HZPPLSQL lacks CREATE SESSION privilege; logon denied


5.尝试授权,报错:没有连接。排查:查看当前用户为"空",即需要重新登陆
SQL> grant create session to hzpplsql;
SP2-0640: Not connected
SQL> show user;
USER is ""


6.重新连接sysdba登陆,再次授权,授权成功。
SQL> conn / as sysdba 
Connected.
SQL> show user;
USER is "SYS"


SQL> grant create session to hzpplsql;
Grant succeeded.


//此时新用户hzpplsql就可以登陆了
SQL> conn hzpplsql/hzpplsql@orcal;
Connected.


//但是做任何事情的权限还是没有
SQL> create table t (id number);
create table t (id number)
*
ERROR at line 1:
ORA-01031: insufficient privileges


7.为用户hzpplsql授予DBA权限
切换到sysdba用户:
SQL> conn / as sysdba;
Connected.
SQL> grant resource,connect,dba to hzpplsql;


Grant succeeded.


补充:
对于普通用户:授予connect, resource权限。 
对于DBA管理用户:授予connect,resource, dba权限。
DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。sysdba角色之外权限最大的角色 
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。 
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。




8.查看用户hzpplsql目前拥有的权限
切换到hzpplsql用户
SQL> select * from user_sys_privs;


USERNAME                       PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
HZPPLSQL                       UNLIMITED TABLESPACE                     NO
HZPPLSQL                       CREATE SESSION                           NO


SQL> select * from user_role_privs;


USERNAME                       GRANTED_ROLE                   ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
HZPPLSQL                       CONNECT                        NO  YES NO
HZPPLSQL                       DBA                            NO  YES NO
HZPPLSQL                       RESOURCE                       NO  YES NO




补充:查看当前登陆用户的权限(系统、对象、角色)
select * from user_sys_privs;
select * from user_role_privs;
select * from user_tab_privs;




二、数据库环境已经创建好,具有DBA权限的用户hzpplsql,开始进行《Oracle PL/SQL攻略》的学习与练习


D:\myplsqltest\oracle-pl-sql-recipes-master\Oracle PL SQL Recipes\sources\hr进入目录,然后打开命令行终端CMD。执行如下命令:
1.通过SQL*PLUS连接到数据库,用刚刚新建的用户hzpplsql


sqlplus hzpplsql/hzpplsql@HZPEN181


2.执行上面目录下的sql脚本
@hr_main.sql




执行结果如下:


D:\myplsqltest\oracle-pl-sql-recipes-master\Oracle PL SQL Recipes\sources\hr>sqlplus hzpplsql/hzpplsql@HZPEN181


SQL*Plus: Release 11.2.0.1.0 Production on 星期一 11月 28 22:43:32 2016


Copyright (c) 1982, 2010, Oracle.  All rights reserved.




连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options


SQL> @hr_main.sql
SP2-0042: 未知命令 "em" - 其余行忽略。
******  Creating REGIONS table ....


表已创建。




索引已创建。




表已更改。


******  Creating COUNTRIES table ....


表已创建。




表已更改。


SP2-0734: 未知的命令开头 "department..." - 忽略了剩余的行。
******  Creating LOCATIONS table ....


表已创建。


。。。。。。。此处省略


成功安装所有HR相关表,到指定的用户(模式schema)中了,可以跟着书做练习了。

0 0
原创粉丝点击