Oracle12c创建新用户提示公共用户名或角色无效

本文介绍了解决在创建Oracle数据库实例时遇到的ORA-65096错误的方法。通过在Database Configuration Assistant中取消勾选“创建为容器数据库”选项,可以避免公共用户名或角色无效的问题。

在创建oracle数据库实例时

问题:ORA-65096:公共用户名或角色无效

  

解决方案:

怎么就可以创建用户而不用加c##了呢,我在这里创建一个新的数据库,步骤如下:

  打开 Database Configuration Assistant

  

  出现如下界面:

 

  点击“下一步”出现如下界面,在创建数据库的时候将“创建为容器数据库”项取消勾选。

  这样新创建的数据库就可以使用了。

<think> 我们被要求回答“Oracle创建新用户的方法”,并参考站内引用。根据引用内容,我们可以总结出创建Oracle用户的基本步骤和常见配置。 核心步骤: 1. 使用CREATE USER语句创建用户,指定用户名和密码。 2. 可选:指定表空间(如不指定则使用默认表空间)。 3. 为用户授予必要的权限(如连接权限CONNECT)角色(如RESOURCE)。 注意:在Oracle 12c及更高版本的多租户环境中,创建普通用户需要在用户名前加“C##”前缀(除非使用容器数据库并创建本地用户,者修改了容器数据库的命名规则)。 详细步骤: 步骤1:创建用户 基本语法: CREATE USER 用户名 IDENTIFIED BY 密码; 例如(引用[1][2][3]): CREATE USER new_user IDENTIFIED BY password; 在12c及以上版本,可能需要(引用[4]): CREATE USER c##username IDENTIFIED BY password; 步骤2:指定表空间(可选) CREATE USER c##username IDENTIFIED BY password DEFAULT TABLESPACE tablespace_name; 步骤3:授予权限 至少需要授予连接权限(引用[1][2][5]): GRANT CREATE SESSION TO username; 通常还会授予资源角色(引用[2][3]): GRANT CONNECT, RESOURCE TO username; 如果需要查询其他用户的表,则需要显式授权(引用[5]): GRANT SELECT ON 模式名.表名 TO username; -- 者授予所有表的查询权限(谨慎): GRANT SELECT ANY TABLE TO username; 步骤4:修改用户(可选) 修改密码(引用[3]): ALTER USER username IDENTIFIED BY new_password; 步骤5:删除用户(可选) DROP USER username; 注意事项: - 创建用户需要具有CREATE USER系统权限(通常由DBA执行)。 - 在12c及以上版本,如果创建用户出现ORA-65096错误(无效公共用户名),则需要在用户名前加上“C##”修改容器数据库的命名规则(引用[4])。 - 密码应遵循Oracle的密码策略(如长度、复杂度)。 示例: 1. 创建用户: CREATE USER c##test IDENTIFIED BY 123456 DEFAULT TABLESPACE users; 2. 授予权限: GRANT CONNECT, RESOURCE TO c##test; GRANT CREATE SESSION TO c##test; 3. 如果需要查询另一个用户(如C##DCP)的表: GRANT SELECT ON C##DCP.example_table TO c##test; 引用说明: - 引用[1][2][3]提供了基本的用户创建和授权方法。 - 引用[4]强调了在12c及以上版本中创建用户需要以C##开头。 - 引用[5]展示了如何授予查询权限。 因此,我们可以按照上述步骤创建Oracle用户。 生成相关问题: 1. Oracle 12c及以上版本为什么要求用户名以C##开头? 2. 如何修改Oracle用户的默认表空间? 3. 如何撤销Oracle用户的权限? </think> ### Oracle创建新用户的方法 在Oracle数据库中创建新用户的基本语法和步骤如下(需使用具有 `CREATE USER` 权限的账户执行): #### 1. **基础创建语法** ```sql CREATE USER 用户名 IDENTIFIED BY 密码; ``` **示例**: ```sql CREATE USER new_user IDENTIFIED BY mypassword123; -- 创建用户new_user,密码mypassword123 ``` > 📌 注意:Oracle 12c及以上版本可能需要添加 `C##` 前缀(多租户架构要求)[^4] > 例:`CREATE USER c##test IDENTIFIED BY 123456;` #### 2. **进阶配置(可选)** - **指定默认表空间**: ```sql CREATE USER new_user IDENTIFIED BY pwd DEFAULT TABLESPACE users; ``` - **分配配置文件**: ```sql CREATE USER new_user IDENTIFIED BY pwd PROFILE default; ``` #### 3. **授权访问权限** 新用户需被授予权限才能登录: ```sql GRANT CREATE SESSION TO new_user; -- 允许登录[^1][^5] ``` 更完整的权限配置: ```sql GRANT CONNECT, RESOURCE TO new_user; -- 授予连接和基础资源权限[^2][^3] ``` #### 4. **验证用户创建** 查询用户信息: ```sql SELECT username, account_status FROM dba_users WHERE username = 'NEW_USER'; ``` #### 5. **管理用户** - **修改密码**: ```sql ALTER USER new_user IDENTIFIED BY new_password; [^3] ``` - **删除用户**: ```sql DROP USER new_user CASCADE; -- CASCADE删除关联对象[^3] ``` --- ### ⚠️ 常见问题解决 1. **ORA-65096 错误(12c+版本)** 需在用户名前添加 `C##` 前缀(多租户架构要求)[^4]: ```sql CREATE USER c##app_user IDENTIFIED BY password; ``` 2. **权限不足错误** 使用管理员账户执行: ```sql CONNECT / AS SYSDBA; -- 以SYSDBA登录后操作[^3] ``` 3. **特殊字符密码** 密码包含特殊字符(如`@`)需用双引号: ```sql CREATE USER new_user IDENTIFIED BY "pwd@123"; ``` > 💡 最佳实践:创建后立即授权必要权限(如 `CREATE SESSION`),避免用户无法登录[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值