SQL*Plus:> Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> show user;
USER is ""
SQL>
使用system用户登录
[oracle@oracle11g ~]$ sqlplus system/redhat
SQL*Plus:> Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition> With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
SQL> show user;
USER is "SYSTEM"
SQL>
进行切换用户到scott
SQL> conn scott/redhat;
ERROR:
ORA-28000: the account is locked 表明用户已经被锁定了
使用系统用户进行解锁
SQL> conn system/redhat
Connected.
SQL>>
User> 然后重新使用Scott用户登录
SQL> conn scott/tiger;
ERROR:
ORA-28001: the password has expired 告知用户scott密码过期
Changing password for scott
New password:
Retype new password:
Password changed
Connected.
SQL> show user;
USER is "SCOTT"
文件操作命令:
1、运行sql脚本,start /root/a.sql
SQL>start /home/oracle/a.sql
2、spool将sqlplus屏幕上的输入到一个文件中
SQL>spool /home/oracle/b.sql;
SQL>select * from emp;
SQL>spool off; 将select * from emp查询出来的内容保存到某个文件中
&:可以替代变量,而该变量在执行时,需要用户输入
SQL>select * from emp where job='&job';这里就会输入job的一个值来替代
SQL> select * from emp where job='&job';
Enter value for job: MANAGER
old 1: select * from emp where job='&job'
new 1: select * from emp where job='MANAGER'
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- --------- ---------- ----------
DEPTNO
----------
7566 JONES MANAGER 7839 02-APR-81 2975
20
7698 BLAKE MANAGER 7839 01-MAY-81 2850
30
7782 CLARK MANAGER 7839 09-JUN-81 2450
显示和设置环境变量:
SQL> show linesize;
linesize 80
SQL>set linesize 50;
创建用户
在oracle中要创建一个新的用户使用create user语句,一般是具有dba的权限才能使用
SQL> create user xiaoming> User created.
SQL> show user;
USER is "SYSTEM"
给用户修改密码,需要dba权限或者alter user的系统权限
SQL> password xiaoming
Changing password for xiaoming
New password:
Retype new password:
Password changed
或者
sql>alter user 用户名>
SQL>>
User> note:新创建的用户并不能马上能够登录,创建的新用户没有任何权限,所以登录不了
SQL> conn xiaoming/huang;
ERROR:
ORA-01045: user XIAOMING lacks CREATE SESSION privilege; logon deniedWarning: You are no longer connected to ORACLE.
SQL> show user;
USER is ""
删除用户:
一般以dba的身份去删除某个用户,如果用其他的用户去删除某个用户,需要具有drop user的权限
比如:drop user 用户名 [cascade]
在删除用户时,注意,如果删除的用户已经创建了表,那么就需要在删除的时候加上一个参数cascade
这个参数的意思就是删除用户以及用户创建的表
用户管理----》授权
创建的新用户是没有任何权限的,连登录都不行,需要为其制定相应的权限,赋予权限用grant命令
回收权限的命令为revoke
oracle事先就有权限这个定义,有两种
1、系统权限:用户对数据库访问的相关权限(建库建表建索引登录数据库等等)
create session(系统权限140个)
2、对象权限:用户对其他用户的数据对象访问操作的权限
数据对象:每个用户创建的表、视图、触发器等等(25个)
oracle角色:为了授予权限方便,事先定义了一些角色,赋予了一些权限
从系统权限中选出某些权限赋予给指定的角色
connect就是其中的一个角色(包含7个权限)
grant connect to xiaoming
角色也分两种:
1、自定义角色:自己定义角色
2、预定义角色:数据库已经制定好的角色(connect就是预定义角色)
角色举例:
connect
dba:授予dba角色就会有dba系统的所有权限
resource:可以让某个用户在表空间建表
例子:
SQL> grant connect to xiaoming ; 将connect角色授予给xiaoming,并具备一些权限
Grant succeeded.
再次使用用户xiaoming登录:
SQL> conn xiaoming/redhat; 这样授权之后,用户xiaoming就可以登录了
Connected.
刚创建的用户并没有任何表,新创建的用户能否创建表呢?
SQL> conn xiaoming/redhat;
Connected.
SQL> show user;
USER is "XIAOMING"
SQL> create table student(id number,name varchar2(20));
create table student(id number,name varchar2(20))
*
ERROR at line 1:
ORA-01031: insufficient privileges
由上述报错发现,授予connect角色并不能创建表,那么在加上resource角色呢?
切换用户,并授予角色给xiaoming
SQL> show user;
USER is "XIAOMING"
SQL> conn system/redhat;
Connected.
SQL> grant resource to xiaoming;
Grant succeeded.
再次创建表
SQL> show user;
USER is "XIAOMING"
SQL> conn system/redhat;
Connected.
SQL> grant resource to xiaoming;
Grant succeeded.
SQL> conn xiaoming/redhat
Connected.
SQL> create table student(id number,name varchar2(20));
Table created.
SQL> desc student;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
NAME VARCHAR2(20)
可以看出表创建成功,这就是resource角色的作用
对象权限:用户对其他用户的数据对象访问操作的权限
1、select
2、insert
3、update
4、delete
5、all
6、create index等等
数据对象:每个用户创建的表、视图、触发器等等(25个)
xiaoming这个用户能否查询scott用户下的某个表?
SQL> select * from emp;
select * from emp
*
ERROR at line 1:
ORA-00942: table or view does not exist 可以清楚的看出不能访问scott下的表emp
该如何操作呢?
由于表emp是scott用户下面的,于是需要使用scott用户向xiaoming用户进行授权
SQL> conn scott/redhat
Connected.
SQL> grant select on emp to xiaoming; 使用scott用户进行授权
Grant succeeded.
SQL> conn xiaoming/redhat 连接xiaoming这个用户
Connected.
SQL> select * from emp; 查询表emp,但是依然失败,由于是scoot的表emp
select * from emp
*
ERROR at line 1:
ORA-00942: table or view does not exist
所以需要下面这样进行查询
SQL> select * from scott.emp; scott用户下面的表
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- --------- ---------- ----------
DEPTNO
----------
7369 SMITH CLERK 7902 17-DEC-80 800
20
收回权限revoke
scott收回xiaoming有查询的权限
revoke select on emp from xiaoming;
revoke收回权限,必须是原始用户对其赋予权限的那个用户收回
SQL> show user;
USER is "XIAOMING"
SQL> conn scott/redhat;
Connected.
SQL> revoke select on emp from xiaoming;
Revoke succeeded.
对权限的维护:
1、如果是对象权限
希望xiaoming用户可以去查询scott的emp表,而且还希望xiaoming可以把这个权限能够给另外的用户?
利用scott用户进行如下授权
SQL> show user;
USER is "SCOTT"
SQL> grant select on emp to xiaoming with grant option;
Grant succeeded.
然后新建一个用户,授予connect角色权限
SQL> conn system/redhat
Connected.
SQL> create user xiaobai> User created.
SQL> grant connect to xiaobai;
Grant succeeded.
然后使用xiaoming用户给xiaobai用户进行授权
SQL> conn xiaoming/redhat
Connected.
SQL> grant select on scott.emp to xiaobai;
Grant succeeded.
最后使用xiaobai用户进行查询emp表
SQL> conn xiaobai/redhat
Connected.
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- --------- ---------- ----------
DEPTNO
----------
7369 SMITH CLERK 7902 17-DEC-80 800
20
2、如果是系统权限
system用户给xiaoming授权,并且使用户能够授权权限给其他用户
grant connect to xiaoming with admin option; with admin option这里不同而已
使用profile管理用户口令
profile是口令限制,资源限制的命令集合,当监理数据库时,oracle会自动建立
名称为default的profile,当建立用户没有指定profile选项,那么oracle就会将default分配给用户
1、账户锁定
指定该账户登录时最多可以输入密码的次数,也可以指定用户锁定的时间,一般用dba的身份去执行该命令
例如:指定tea这个用户最多只能尝试三次登录,锁定时间为两天
创建profile文件(规则)
SQL>create profile lock_account limit failed_login_attempts 3 password_lock_time 2; -----》lock_account为profile名称随便起
SQL>alter user tea profile lock_account; 给用户tea添加上profile文件约束
2、解决锁定:
SQL> conn system/redhat;
Connected.