在 Linux 上创建 PostgreSQL 数据库和 sde 用户
ArcSDE 的 Linux 版安装程序提供了 setup_pgdb.sde 脚本,该脚本用于在 Red Hat Linux 上创建 PostgreSQL 表空间、数据库、sde 用户及其方案。您可以使用安装介质上提供的脚本或者手动执行这些步骤。有关 PostgreSQL 安装的详细信息,请参阅 PostgreSQL 文档。
setup_pgdb.sde 脚本还安装 PL/pgSQL 语言。有关手动安装 PL/pgSQL 的信息,请参阅在 Linux 上安装 PL/pgSQL。
虽然 PostgreSQL 允许用户通过用引号将名称括起来的方式存储大小写混合的对象名称,但在 ArcSDE 地理数据库中不能使用这些名称。因此,切勿使用大小写混合的数据库名称、表空间名称、用户名或方案名称。
-
以 postgres 超级用户身份登录 psql 并创建 ArcSDE 管理用户。创建的用户的名称必须是 sde,但您可以根据个人喜好选择任何密码。
CREATE ROLE sde LOGIN PASSWORD <password> SUPERUSER NOINHERIT CREATEDB;
-
如果想在非默认表空间 (pg_default) 中存储供 ArcSDE 地理数据库使用的数据库,则在空目录中创建一个新表空间。
在下例中,在 32 位服务器上的 sde 目录中创建了名为 sde1 的表空间。该表空间归 sde 用户所有。
CREATE TABLESPACE sde1 OWNER sde LOCATION '/var/lib/pgsql/data/sde';
注意:PostgreSQL 要求在空目录中创建表空间。如果指定的目录已包含文件,则表空间创建将失败。
-
创建数据库,并为 sde 用户授予对该数据库的完全访问权限。
sde 用户具有完全访问权限才能创建地理数据库。
注意:如果想要使用 PostGIS 几何类型进行数据存储,则必须使用 PostGIS 模板创建数据库并使用 PostGIS 提供的脚本为 PostGIS 几何启用现有数据库。
存储地理数据库的数据库的名称不能包含特殊字符。
在本例中,机构数据库归 sde 用户所有,使用 UTF8 字符编码,存储在 sde1 表空间中。
CREATE DATABASE agency OWNER sde ENCODING 'UTF8' TABLESPACE sde1; GRANT ALL ON DATABASE agency TO sde;
-
对公共角色和组或特定角色和组授予使用权限,以便其他用户可以访问数据库。
GRANT USAGE ON DATABASE agency TO public;
-
以 postgres 超级用户身份登录数据库以创建 sde 用户的方案。该方案将用于存储 ArcSDE 地理数据库档案资料库。方案名称必须是 sde。
\c agency CREATE SCHEMA sde AUTHORIZATION sde;
-
为 sde 用户授予对 sde 方案的完全权限。
GRANT ALL ON SCHEMA sde TO sde;
-
对公共角色和组或特定角色和组授予使用权限以便其可以访问 sde 方案。
任何与地理数据库进行交互的用户都必须具有对 sde 方案的使用权限。
GRANT USAGE ON SCHEMA sde TO public;
-
如果要使用 PostGIS 几何类型,则还必须为 sde 授予对 public.geometry_columns 表的 SELECT、INSERT、UPDATE 和 DELETE 权限。
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE public.geometry_columns TO sde;
-
另外,如果要使用 PostGIS 几何类型,还需要为 sde 授予对 public.spatial_ref_sys 表的 SELECT 权限。
GRANT SELECT ON TABLE public.spatial_ref_sys TO sde;
创建其他可访问和操作数据库中的数据的用户。
ArcSDE 提供包含用于创建其他用户及其方案的 SQL 语句的文件。安装 ArcSDE 后,可在 $SDEHOME > 工具 > postgres 中找到该文件。