Oracle用户和权限
Oracle用户和权限
1、连接终端
进入docker容器之后,在命令行中输入sqlplus system/oracl,提示输入用户名和密码
root@3a06527c1048:/# sqlplus system/oracl
SQL*Plus: Release 11.2.0.2.0 Production on Tue Aug 8 04:18:40 2023
Copyright (c) 1982, 2011, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
#输入用户名
Enter user-name: PP
#输入密码
Enter password:
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
# 如下则表明连接成功
SQL>
1.1已经进入sqlplus终端
conn 账户名/密码
conn 账户名(再输密码)
1.2设置终端数据行和数据页的属性值
set linesize 500
每行最大字符(如果小了显示数据会折行)
set pagesize 5000
一次查询可以输出的内容(如果小了显示数据会折行)
1.3查看当前用户身份
select user from dual
show user
SQL> select user from dual
2
SQL> show user
USER is "PP"
SQL>
2、创建用户
Oracle的身份验证分为两种:
-
当前登录的操作系统用户
-
数据内置账户
sys(相当于数据库的创建者/群主——只有一个)
如果以sqlplus sys as sysdba(密码可以随意,但是不对不能改密码),会被自动映射到操作系统身份(这个身份就是数据库的内置账户sys)
如果以sqlplus / as sysdba(不需要密码,但是也改不了密码),采用数据库内置的sys身份
可以启动、停止、配置服务器
system(相当于数据库的管理员/由群主创建授权——可以有多个)
一般用于数据和用户的维护
3、角色和权限
权限:一个操作的最小单元
create session
create table
create user
create procedure
角色:一组权限的集合(便于授权和管理)
dba
connect
resource
由sys/system可以查看数据库中已有的角色,以及角色中已经包含了哪些权限
select grantee, privilege from dba_sys_privs where grantee = 'CONNECT';
select grantee, privilege from dba_sys_privs where grantee = 'RESOURCE';
SQL> select grantee, privilege from dba_sys_privs where grantee = 'CONNECT';
GRANTEE PRIVILEGE
------------------------------ ----------------------------------------
CONNECT CREATE SESSION
SQL> select grantee, privilege from dba_sys_privs where grantee = 'RESOURCE';
GRANTEE PRIVILEGE
------------------------------ ----------------------------------------
RESOURCE CREATE TRIGGER
RESOURCE CREATE SEQUENCE
RESOURCE CREATE TYPE
RESOURCE CREATE PROCEDURE
RESOURCE CREATE CLUSTER
RESOURCE CREATE OPERATOR
RESOURCE CREATE INDEXTYPE
RESOURCE CREATE TABLE
8 rows selected.
4、授权
- 由sys/system创建用户
create user pp0419 identified by pp0419;
- 由sys/system可以查看当前数据库中的所有用户账号
select username, account_status from dba_users
- 由sys/system授予用户可以登录数据库服务器的权限
grant create session to pp0419
或者
由sys/system授予用户可以登录数据库服务器的角色
grant connect to pp0419
- 由sys/system授予用户访问数据库资源的角色 (不能将一个整体角色中的某些权限拿出来授权)
grant resource to pp0419
# 由sys/system创建用户
SQL> create user pp0419 identified by pp0419;
User created.
# 由sys/system可以查看当前数据库中的所有用户账号
SQL> select username,account_status from dba_users;
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SYS OPEN
PP OPEN
PP0419 OPEN
ANONYMOUS OPEN
AUTOTEST OPEN
SYSTEM EXPIRED(GRACE)
APEX_PUBLIC_USER LOCKED
APEX_040000 LOCKED
XS$NULL EXPIRED & LOCKED
OUTLN EXPIRED & LOCKED
XDB EXPIRED & LOCKED
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
CTXSYS EXPIRED & LOCKED
MDSYS EXPIRED & LOCKED
FLOWS_FILES EXPIRED & LOCKED
HR EXPIRED & LOCKED
15 rows selected.
# 由sys/system授予用户可以登录数据库服务器的权限
SQL> grant create session to pp0419;
Grant succeeded.
# 由sys/system授予用户可以登录数据库服务器的角色
SQL> grant connect to pp0419;
Grant succeeded.
# 由sys/system授予用户访问数据库资源的角色(不能将一个整体角色中的某些权限拿出来授权)
SQL> grant resource to pp0419;
Grant succeeded.
5、管理
系统级权限/角色
with admin option
系统级权限或者角色的传递
当sys/system在授予用户权限时,附加with admin option
,就意味着该用户还可以将自己的这个权限/角色再传递授权给别人。
revoke
权限/角色的撤销 (角色只能整体撤销,不能只撤销角色中的某些权限)
revoke create session from pp0419
reovke connect, resource from pp0419
注意
不能撤销一个角色中的某几个权限(只有撤销该整个角色)
6、账户管理
account lock/unlock
用户账户的锁定和解锁(一定要由sys/system执行)
alter user scott account lock;
alter user scott account unlock;
password expire
强制密码过期(一定要由sys/system执行)
alter user scott password expire;
对象级(一般是数据表、还有存储过程、视图等都属于数据对象)
一定要由数据对象的属主或者具有dba角色的用户才能授予
授予
grant select, update, delete, insert on scott.emp to pp0419;
grant all on scott.emp to pp0419;
撤销
revoke update, delete on scott.emp from pp0419;
注意:对于update还可以再细化到对哪些列允许更新
grant update(job, deptno) on scott.emp to pp0419;
with grant option
对象级权限的传递(将自己拥有的别人的数据对象再授权第三方访问,属主或者dba一定要授予你再授权的选项)
grant select on scott.emp to pp0419 with grant option;
7、修改密码
- 修改自己的密码
password
passw
- dba角色可以修改其他用户密码
password scott
passw scott
alter user scott identified by tiger;
自己家中如何设置一个合适的用户去使用或者开发?
- 以sys或者操作系统管理员身份登录服务器
sqlplus sys as sysdba
sqlplus / as sysdba
-
create user zhangsan identified by zhangsan;
-
grant dba to zhangsan;
创建自定义角色
grant select, insert on t_user to r_1;
grant r_1 to pp2;
posted on 2023-08-08 16:27 JavaCoderPan 阅读(48) 评论(0) 编辑 收藏 举报