Oracle 12c 创建新用户
Oracle12c 引入CDB/PDB 多租户架构,在容器数据库(CDB)中直接创建普通用户名会报错,CDB内创建的公用用户名必须以 c## / C## 作为前缀。
登录
- 打开Windows cmd,启动sqlplus
sqlplus
- 使用超级管理员账号登录数据库
请输入用户名: sys as sysdba
输入口令: 【填写安装时设置的sys密码】Code language: HTTP (http)
登录成功提示:连接到: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
创建用户
错误写法
目标:创建用户 cat,密码 123456
执行SQL:
CREATE USER cat IDENTIFIED BY 123456;
ORA-65096: 公用用户名或角色名无效Code language: HTTP (http)
报错原因:当前处于CDB根容器,创建公用用户(Common User)名称强制要求前缀 c##,cat 不符合命名规范。
正确创建公用用户
执行SQL:
CREATE USER c##cat IDENTIFIED BY Bm123321;Code language: CSS (css)
执行结果:用户已创建。
分配用户权限
错误授权语句
GRANT CONNECT, RESOURCE, DBA TO cat;
ORA-01917: 用户或角色 'CAT' 不存在Code language: JavaScript (javascript)
用户名是 c##cat,授权时用户名必须和创建时完全一致,不能简写为cat。
正确授权语句
GRANT CONNECT, RESOURCE, DBA TO c##cat;Code language: CSS (css)
权限说明:
CONNECT:基础登录连接权限RESOURCE:开发常用资源角色,允许创建表、索引等对象DBA:完整数据库管理员权限(测试环境使用,生产环境不建议随意分配)
新用户登录验证
- 执行
exit退出sys管理员会话,重新打开sqlplus
SQL> exitCode language: PHP (php)
- 尝试错误登录
请输入用户名: cat
输入口令: 123456Code language: HTTP (http)
报错:ORA-01017: 用户名/口令无效; 登录被拒绝
- 正确方式
请输入用户名: c##cat
输入口令: 123456Code language: HTTP (http)
成功连接数据库。
Previous: SQL Plus和SQL Developer
Next: 创建表