前置條件
yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake
建立使用者及使用者組
groupadd postgres_group useradd -d /home/postgres -g postgres_group postgres
編譯安裝
tar -zxvf postgres-16-1.tar.gz ./configure --prefix=/opt/pgsql/postgresql --without-icu make && make install
啟動資料庫
# 建立資料存放目錄 mkdir -p /home/postgres/pgdata # 初始化資料庫 cd /opt/pgsql/postgres/bin ./initdb -D /home/postgres/pgdata/ # 啟動資料庫 cd /opt/pgsql/postgres/bin ./pg_ctl -D /home/postgres/pgdata/ -l logfile start # 停止資料庫 # cd /opt/pgsql/postgres/bin # ./pg_ctl -D /home/postgres/pgdata/ stop # 登入資料庫 cd /opt/pgsql/postgres/bin ./psql -h localhost -p 5432 postgres
開放遠端訪問
cd /home/postgres/pgdata # 備份pg服務配置檔案 cp postgresql.conf postgresql.conf_init # 編輯pg服務配置檔案 vi postgresql.conf #將該配置檔案中的listen_address的值從localhost修改爲*,並將開頭的#刪除 # 備份pg遠端訪問配置檔案 cp pg_hba.conf pg_hba.conf_init # 編輯pg遠端訪問配置檔案 vi pg_hba.conf # IPv4 local connections: host all all 0.0.0.0/0 trust #加入這一行 host all all 127.0.0.1/32 trust # 停止pg服務 cd /opt/pgsql/postgres/bin ./pg_ctl -D /home/postgres/pgdata/ stop ./pg_ctl -D /home/postgres/pgdata/ -l logfile start
建立角色
# 先使用postgres使用者登入資料庫,建立一個可以登入及建立資料庫的角色test001 create role test001 LOGIN CREATEDB; # 修改角色test001的密碼為test1234 alter user test001 password 'test1234'; # 建立一個名稱為test_001資料庫並設定歸屬者為test001 create database test_001 owner test001 # 使用test001登入test_001資料庫 cd /opt/pgsql/postgres/bin ./psql -h192.168.198.129 -p5432 -U test001 -dtest_001 # 建立一個名稱為monitor_schema的模式 create schema monitor_schema
建立使用者
其實使用者和角色都是角色,只是使用者是具有登入許可權的角色。
# 建立一個使用者normal_user1 create user normal_user1; # 為使用者normal_user1設定密碼 alter user normal_user1 password 'test1234'; # 建立一個具有建立資料庫許可權的角色 create role createdb_role CREATEDB; # 將角色createdb_role的許可權賦予使用者normal_user1 grant createdb_role to normal_user1; # 移除normal_user1建立庫的許可權 revoke createdb_role from normal_user1;