在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服務器上的所有數據庫,包括新創建的數據庫。

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