# CREATE DIRECTORY
#### 功能描述
创建一个目录对象，该目录对象可以定义服务器文件系统上目录的别名，用于存放用户使用的数据文件，用户可以通过DBE_FILE高级包进行读写这些文件。用户可在PG_DIRECTORY表中查看系统已存在目录对象。
#### 注意事项
- 目录对象的默认所有者为创建目录对象的用户，创建用户默认拥有此目录对象的READ和WRITE操作权限。当enable_access_server_directory=off时，只允许初始用户创建目录对象。当enable_access_server_directory=on时，具有SYSADMIN权限的用户和继承了内置角色gs_role_directory_create权限的用户可以创建目录对象。
- 对于用户自行部署的数据库场景，由用户自主完成权限体系的初始配置及管理，当进行目录权限授权时，必须确保目标目录满足以下安全条件：通过安全基线核查、具备访问控制审计机制以及完成敏感数据分类分级等安全条件要求。权限配置应遵循最小权限原则，并建立权限审批追溯机制等。
- 目录对象可向指定用户授予READ和WRITE操作权限，用于dbe_file的权限控制。请合理创建目录对象，若目录对象创建于操作系统的关键目录（如根目录）下，当对目录文件中的配置进行修改时，可能会引发非预期的安全风险问题。
 
#### 语法格式
```
CREATE [OR REPLACE] DIRECTORY directory_name
    AS 'path_name';
```
![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/figure/zh-cn_image_0000002764469474.png "点击放大")
#### 参数说明
- **directory_name**
  创建的目录对象的名称。
  取值范围：字符串，要符合[标识符命名规范](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0003.html#ZH-CN_TOPIC_0000002793787739__section14873217506)。
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  创建目录对象时会进行以下合法性校验：
  - 检查添加路径是否为操作系统实际存在路径，如不存在会提示用户使用风险。
  
  - 校验数据库初始化用户（如omm）对于添加路径的权限（即操作系统目录权限，读/写/执行 - R/W/X），如果权限不足，会提示用户使用风险。
    
- **path_name**
  服务器文件系统上的目录路径。
  取值范围：有效的操作系统路径。
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  - 在集群环境下，用户指定的目录路径需要保证各节点上路径的一致性，否则在不同节点上执行会产生无法匹配路径的问题。
  
  - 禁止创建以下目录路径：
    - 路径含特殊字符。
    
    - 路径是相对路径。
     
    
 
#### 示例
```
--创建目录对象。
gaussdb=# CREATE OR REPLACE DIRECTORY dir AS '/tmp/';
--查看已创建的目录对象。
gaussdb=# select * from pg_directory;
 dirname | owner | dirpath | diracl 
---------+-------+---------+--------
 dir     |    10 | /tmp    | 
(1 row)
--删除目录对象。
gaussdb=# DROP DIRECTORY dir;
```
#### 相关链接
[ALTER DIRECTORY](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0187.html)，[DROP DIRECTORY](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0296.html)
