在CentOS中安装最新版本的PostgreSQL和PostGIS的步骤

1. 添加PostgreSQL源

您需要将PostgreSQL存储库添加到系统中。使用以下命令将yum存储库文件复制到/etc/yum.repos.d/目录中:

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

2. 安装PostgreSQL 

使用以下命令安装最新版本的PostgreSQL:

sudo yum install -y postgresql13-server postgresql13-contrib

3. 初始化数据库

使用以下命令初始化PostgreSQL数据库:

sudo /usr/pgsql-13/bin/postgresql-13-setup initdb

4. 启动PostgreSQL服务

使用以下命令启动PostgreSQL服务:

sudo systemctl start postgresql-13

5. 设置PostgreSQL服务自启动

使用以下命令将PostgreSQL服务设置为自启动:

sudo systemctl enable postgresql-13

6. 安装PostGIS

使用以下命令安装PostGIS:

sudo yum install -y postgis30_13

7. 在PostgreSQL中启用PostGIS扩展

使用以下命令在PostgreSQL中启用PostGIS扩展:

sudo -u postgres psql -c "CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology;" mydb

其中,mydb是您要启用PostGIS扩展的数据库名称。如果您不确定数据库名称,请使用以下命令查看已创建的所有数据库:

sudo -u postgres psql -l

现在,已经成功在CentOS中安装了最新版本的PostgreSQL和PostGIS。

在默认情况下,PostgreSQL是不允许远程访问的。如果您需要从远程主机访问PostgreSQL服务器,则需要进行以下设置:

8. 修改pg_hba.conf文件

使用以下命令打开pg_hba.conf文件:

sudo vim /var/lib/pgsql/13/data/pg_hba.conf

在文件的末尾添加以下行,以允许从所有主机连接到PostgreSQL服务器:

host  all  all  0.0.0.0/0  md5

9. 修改postgresql.conf文件

使用以下命令打开postgresql.conf文件:

sudo vim /var/lib/pgsql/13/data/postgresql.conf

找到以下行并将其更改为以下内容:

listen_addresses = '*'

10. 重启PostgreSQL服务

使用以下命令重启PostgreSQL服务:

sudo systemctl restart postgresql-13

现在,已经可以从任何远程主机连接到PostgreSQL服务器。请注意,开启远程访问可能存在安全风险,因此请确保正确配置防火墙和认证方式来保护您的系统和数据。

在安装PostgreSQL时,通常会自动创建一个名为"postgres"的超级用户。您可以使用此超级用户登录到PostgreSQL服务器进行管理和操作。默认情况下,PostgreSQL的超级用户没有密码,您需要设置密码才能使用。

以下是使用psql客户端登录到PostgreSQL服务器的命令格式:

psql -U <username> -h <host> -d <database>

其中,"<username>"是要使用的用户名,默认为"postgres";"<host>"是PostgreSQL服务器的IP地址或域名;"<database>"是要连接的数据库名称,默认为"postgres"。

如果您在安装PostgreSQL时设置了密码,可以使用以下命令进行登录:

psql -U <username> -h <host> -d <database> -W

"-W"选项表示需要输入密码。

如果您想要创建一个新的数据库用户并设置密码,可以使用以下命令:

1. 使用超级用户登录到PostgreSQL:

sudo -u postgres psql

2. 创建新用户并设置密码:

CREATE USER <username> WITH PASSWORD '<password>';

3. 授予新用户访问数据库的权限:

GRANT ALL PRIVILEGES ON DATABASE <database> TO <username>;

在PostgreSQL中,数据库的权限可以分为以下几种:

  • CONNECT:允许用户连接到指定的数据库。
  • CREATE:允许用户在指定的数据库中创建新表、视图、序列和索引等对象。
  • TEMPORARY:允许用户在指定的数据库中创建临时表。
  • TEMP:允许用户在指定的数据库中使用临时表。
  • USAGE:允许用户查询指定的数据库中的系统目录。
  • SELECT:允许用户查询指定的数据库中的表、视图和序列等对象。
  • INSERT:允许用户向指定的表中插入数据。
  • UPDATE:允许用户更新指定的表中的数据。
  • DELETE:允许用户删除指定的表中的数据。
  • RULE:允许用户创建规则以实现复杂的数据访问控制。
  • REFERENCES:允许用户在指定的表中创建外键约束。
  • TRIGGER:允许用户创建触发器。
  • EXECUTE:允许用户执行指定的函数。
  • USAGE ON LANGUAGE:允许用户使用指定的编程语言。
  • ALL PRIVILEGES:允许用户拥有指定数据库的所有权限。

这些权限可以分配给不同的用户和角色,并在需要时进行修改。管理员可以使用GRANT和REVOKE命令来授予或撤销数据库的权限。

 

要在PostgreSQL中创建一个新的数据库并指定字符编码等配置,可以使用以下命令:

CREATE DATABASE <database_name>
  ENCODING 'UTF8'
  LC_COLLATE='zh_CN.utf8'
  LC_CTYPE='zh_CN.utf8'
  TEMPLATE=template0;

在上面的命令中,您需要指定以下参数:

<database_name>:新数据库的名称。
ENCODING 'UTF8':指定新数据库的字符编码为UTF-8。
LC_COLLATE='zh_CN.utf8':指定新数据库的字符排序规则为中文的UTF-8排序规则。
LC_CTYPE='zh_CN.utf8':指定新数据库的字符分类为中文的UTF-8分类。
TEMPLATE=template0:使用template0作为新数据库的模板。
例如,要创建一个名为“mydatabase”的新数据库,并将字符编码设置为UTF-8,字符排序规则和分类设置为中文的UTF-8规则,请使用以下命令:

CREATE DATABASE mydatabase
  ENCODING 'UTF8'
  LC_COLLATE='zh_CN.utf8'
  LC_CTYPE='zh_CN.utf8'
  TEMPLATE=template0;

完成后,您可以使用以下命令检查新数据库是否已成功创建:

\l

这将列出PostgreSQL服务器上的所有数据库,包括新创建的数据库。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章