创建一个用户的语句为:create user username identified by pwd;
username为你要创建的用户名,pwd为用户密码。
首先,打开sqlplus,用scott用户登录,
现在创建一个用户名为ydcb,密码为ydcb的用户,
sql这样写:create user ydcb identified by ydcb;
执行报错:权限不足
也就是scott用户没有添加用户的权限,那么谁有这个权限呢?
Oracle中有三个重要的用户分别是:
a、用户名:sys 默认密码为:change_on_install;
b、用户名:system 默认密码:manager;
c、用户名:scott 默认密码:tiger;
sys-超级管理员,system-管理员,scott-普通用户。sys权限最高,所以sys用户有创建用户的权限。
那么,我们从scott切换到sys登录:conn sys/change_on_install as sysdba,登陆成功之后,就可以创建上面的ydcb用户了。我们打开Enterprise Manager Console,就可以看到刚才创建的用户ydcb
登陆用户:conn ydcb/ydcb,结果报错
这是因为还没有给ydcb用户登录的权限。
再次用sys登录,写上如下sql语句:grant connect,resource to ydcb;这句话就赋予ydcb用户连接数据库和对自己用户下数据库表的增删改查的权限。
权限赋予成功之后,我们就可以用ydcb用户名来登录并对数据表进行操作了。
接下来需要思考的是,ydcb用户能否查看其他用户下的数据表呢?比如现在想要查看scott用户下的emp表:select * from scott.emp;结果报错
这说明ydcb用户没有权限操作其他用户的数据表。
如果一定要在ydcb用户中查询scott用户的表的话,那么登陆scott用户,由scott来给他权限进行操作,
赋权限给ydcb用户让其对自己(scott)数据表的增删改查的权限:grant select,delete,update,insert on emp to ydcb;
这个sql语句赋予ydcb对scott用户下的emp表的增删改查权限。
授权成功之后就可以执行scott用户下emp表的增删改查操作了。
scott用户如果要收回ydcb对emp表的删除权限收回权限的关键字为:revoke,收回删除权限的sql语句为:revoke delete on emp from ydcb;
收回所有权限的sql语句为:revoke all on emp from ydcb;
给ydcb用户赋dba的所有权限
grant dba to ydcb;
Orale中scott用户本身权限是什么?
select * from DBA_TAB_PRIVS where grantee='scott';--查看scott权限
select * from DBA_ROLE_PRIVS where grantee='scott';;--查看scott角色
把多余的角色和权限删除
revoke 权限/角色 from scott; --删除权限
另scott账户本来是锁定的
alter user <username> account lock;--锁定账户
alter user <username> account unlock;--解锁账户