要开始角色创建过程,请确定角色的名称以及要授予拥有该角色的用户的连接和特权。尽管连接和特权的确在您的域中,但您在声明新角色的名称时必须考虑某些因素。对于用户定义的角色的名称,请勿使用以下任何
SQL 关键字、访问特权或内置角色:
- ALTER
- C
- CONNECT
- DBA
- DBSECADM
- 缺省目录
- DELETE
- 执行
- EXTEND
- 索引
- INSERT
- 无
- 空
- 公用
- 引用
- RESOURCE
- SELECT
- SETSESSIONAUTH
- SPL
- UPDATE
由于角色名称是权限标识而非 SQL 标识,因此角色名称的最大长度为 32 个字节。
角色名称必须与同一数据库中的现有角色名称不同。角色名也一定不能与操作系统已知的用户名(包括服务器计算机已知的网络用户)相同。要确保新角色名称是唯一的,请检查共享内存结构中当前正在使用数据库的用户以及以下系统目录表中的用户的名称:
- sysusers
- systabauth
- syscolauth
- sysfragauth
- sysprocauth
- sysroleauth
- syssecpolicyexemptions
- sysxtdtypeauth
在相反情况下,在将用户添加至数据库时,请检查用户名是否与任何现有角色名不相同。
在认可角色名之后,请使用 CREATE ROLE 语句来创建新角色。创建角色后,缺省情况下将把所有用于角色管理的特权授予 DBA。
重要: 角色的作用域仅是当前数据库。执行 SET ROLE 语句时,指定的角色仅在当前数据库中生效。
作为安全预防措施,仅通过角色拥有访问特权的用户无法通过视图、触发器或过程来访问远程数据库中的表。