PS:oracle密码必须以字母开头,否则会创建失败)
扩展:
sql> create user switch identified by 123456 default tablespace users temporary tablespace temp quota 3m on users; identified by 表明用户switch将用数据库方式验证 default tablespace users //用户的表空间在users上 temporary tablespace temp //用户的临时表在temp 空间 quota 3m on users //表明用户建立的数据对象(表,索引,视图,pl/sql块..)最大只能是3m 刚刚创建的用户是没有任何权限的,因此,需要dba给该用户授权.
用户可以连接上数据库
sql>grant connect to switch
用户建表没有空间的限制
sql>grand resource to switch
用户成为dba
sql>grant dba to switch
如果给自己修改密码可以使用 password 用户名
如果给别人修改密码则需要具有dba的权限,或是拥有alter user的系统权限
SQL> alter user 用户名 identified by 新密码
举例:
SQL> conn xiaoming/123456; ERROR: ORA-01045: user XIAOMING lacks CREATE SESSION privilege; logon denied 警告: 您不再连接到 ORACLE。 SQL> show user; USER 为 "" SQL> conn system/123456; 已连接。 SQL> grant connect to xiaoming; 授权成功。 SQL> conn xiaoming/123456; 已连接。 SQL>
PS:SQL> grant connect to xiaoming; 这里的connect是角色。当然我们也可以这样做,grant create session to xiaoming;这样用户小明被赋予了创建会话的权限,也能连接上数据库实例。
扩展:
Oracle的权限分为系统权限和对象权限,create session就是一个系统权限select,insert之类的就是对象权限。总结起来就是:系统权限是用户对数据库系统的相关权限,对象权限就是用户对其他用户的数据对象操作的权限。
其在命令上就能清晰的看出,以下举例:
系统权限:grant session to xiaoming; --将建立会话的权限赋给用户
对象权限:grant select on scott.emp to xiaoming; --将查询scott用户下的emp表的权限赋给用户
可以明显的看出系统权限是...to...,而对象权限是...on...to...,从这语法也就证明了上述的总结。
Oracle的角色分为预定义角色和自定义角色,常见的预定义角色有connect,resource,dba
connect角色:可以连接上数据库进行基本操作。
resource角色:在connect角色的基础上可以在任何表空间建表。
dba角色:拥有数据库管理员的权限。
PS:在scott用户登录的情况如下操作,如果是以其他用户登录赋权要加用户名scott。
* 希望xiaoming用户可以去查询scott的emp表
grant select on emp to xiaoming
* 希望xiaoming用户可以去修改scott的emp表
grant update on emp to xiaoming
* 希望xiaoming用户可以去修改/删除,查询,添加scott的emp表
grant all on emp to xiaoming
* scott希望收回xiaoming对emp表的查询权限
revoke select on emp from xiaoming
* 希望xiaoming用户可以去查询scott的emp表/还希望xiaoming可以把这个权限继续给别人。
--如果是对象权限,就加入 with grant option
grant select on emp to xiaoming with grant option
SQL> conn scott/123456; 已连接。 SQL> grant select on scott.emp to xiaoming with grant option; 授权成功。 SQL> conn system/123456; 已连接。 SQL> create user xiaohong identified by 123456; 用户已创建。 SQL> grant connect to xiaohong; 授权成功。 SQL> conn xiaoming/123456; 已连接。 SQL> grant select on scott.emp to xiaohong; 授权成功。
--如果是系统权限。
system给xiaoming权限时:
grant connect to xiaoming with admin option
如果scott把xiaoming对emp表的查询权限回收,那么xiaohong还能查询emp表吗?
答案:不能,权限被回收。
SQL> conn scott/123456; 已连接。 SQL> revoke select on emp from xiaoming; 撤销成功。 SQL> conn xiaohong/123456; 已连接。 SQL> select * from scott.emp; select * from scott.emp 第 1 行出现错误: ORA-00942: 表或视图不存在
SQL> alter user tea profile password_history;
加了cascade,就会把级联的相关东西也给删除掉
----------参考《韩顺平玩转Oracle》