CREATE USER 用户名 IDENTIFIED BY 密码;
,GRANT CONNECT, RESOURCE TO 用户名;
,即完成带密码用户的创建和基础权限分配。创建用户名的核心步骤
通过SQL*Plus或SQL Developer执行以下命令:
CREATE USER 用户名 IDENTIFIED BY 密码 DEFAULT TABLESPACE 表空间名 TEMPORARY TABLESPACE 临时表空间名 QUOTA 空间大小 ON 表空间名;
参数详解:
用户名
:自定义名称(如sales_admin
),需以字母开头,长度≤30字符密码
:需满足复杂度要求(下文详述)DEFAULT/TEMPORARY TABLESPACE
:指定存储数据的表空间(默认USERS
和TEMP
)QUOTA
:分配存储空间(如10M
或UNLIMITED
)
示例:
CREATE USER audit_user IDENTIFIED BY "Str0ngP@ss2025!" DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 500M ON users;
密码安全强制要求
Oracle默认启用密码策略,需满足:
- 长度:≥8字符(12位以上更安全)
- 复杂度:包含大写字母、小写字母、数字、特殊字符(如 )
- 历史记录:禁止重复使用最近5次密码
- 失效周期:默认180天过期(可通过
ALTER PROFILE
修改)
⚠️ 禁用弱密码(如
password123
),否则触发ORA-28003: password verification failed
后续关键配置
-
授予权限(基础权限示例):
GRANT CONNECT, RESOURCE TO 用户名; -- 允许连接和创建对象 GRANT CREATE SESSION TO 用户名; -- 登录必需权限
-
修改密码:
ALTER USER 用户名 IDENTIFIED BY 新密码;
-
解锁用户(当多次登录失败后):
ALTER USER 用户名 ACCOUNT UNLOCK;
故障排查与安全建议
-
问题1:用户无CREATE SESSION权限
错误提示:ORA-01045: CREATE SESSION privilege missing
解决方案:执行GRANT CREATE SESSION TO 用户名;
-
问题2:密码复杂度不足
错误提示:ORA-28003: password verification failed
解决方案:-- 临时禁用复杂度检查(生产环境不推荐) ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL;
-
安全建议:
- 定期使用
ALTER USER ... PASSWORD EXPIRE
强制更新密码 - 通过PROFILE限制登录尝试次数:
CREATE PROFILE secure_profile LIMIT FAILED_LOGIN_ATTEMPTS 3; ALTER USER 用户名 PROFILE secure_profile;
- 定期使用
高级场景
外部认证用户(不存储密码)
CREATE USER ops_user IDENTIFIED EXTERNALLY; -- 依赖操作系统/域认证 **2. 全局用户(企业级认证)** ```sql CREATE USER global_user IDENTIFIED GLOBALLY AS 'CN=admin,DC=corp'; -- 关联LDAP目录服务
总结关键流程
graph LR A[连接SYSDBA账户] --> B[执行CREATE USER命令] B --> C[设置复杂密码] C --> D[分配表空间配额] D --> E[授予CONNECT+CREATE SESSION权限] E --> F[验证登录测试]
📌 最佳实践:
- 生产环境禁用简单密码策略
- 通过角色(ROLE)管理权限而非直接赋权
- 定期审计用户:
SELECT username, account_status FROM dba_users;
引用说明:
本文操作基于Oracle 19c版本,参考Oracle官方文档《Database Security Guide》中Authentication Methods与User Privileges章节,权限管理需遵循最小特权原则(Principle of Least Privilege)。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/38899.html