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