添加PostgreSql官方倉儲
# Create the file repository configuration: sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' # Import the repository signing key: wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - # Update the package lists: sudo apt-get update # Install the latest version of PostgreSQL. # If you want a specific version, use 'postgresql-12' or similar instead of 'postgresql': sudo apt-get -y install postgresql
如果想安裝postgresql 12版本
apt-get install postgresql-12
安裝PostgreSQL服務器和contrib軟件包,該軟件包為PostgreSQL數據庫提供附加功能:
sudo apt install postgresql postgresql-contrib
安裝完成后,PostgreSQL服務將啟動,要驗證安裝,請使用psql工具打印服務器版本
sudo -u postgres psql -c "SELECT version();"
輸出應類似於以下內容:
PostgreSQL 12.4 (Debian 12.4-1.pgdg100+1) on aarch64-unknown-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
啟用對PostgreSQL服務器的遠程訪問
默認情況下,PostgreSQL服務器僅在本地接口127.0.0.1上偵聽。
如果要從遠程位置連接到PostgreSQL服務器,則需要將服務器設置為在公共接口上偵聽,並編輯配置以接受遠程連接。
1,打開配置文件postgresql.conf,並在“CONNECTIONS AND AUTHENTICATION”部分中添加listen_addresses = '*',這指示服務器在所有網絡接口上進行偵聽:
sudo nano /etc/postgresql/12/main/postgresql.conf
編輯為如下:
# CONNECTIONS AND AUTHENTICATION # - Connection Settings - listen_addresses = '*' # what IP address(es) to listen on;
2,打開配置文件pg_hba.conf,將服務器配置為接受遠程登錄,找到“# IPv4 local connections:”
host all all 192.168.1.210/32 trust
或者運行全部IP訪問
host all all 0.0.0.0/0 trust
這里默認是md5,需要設置密碼。如果不需要密碼連接,需要改為trust,默認安裝好后postgres用戶是沒有密碼的 可以設置密碼
sudo -u postgres psql ALTER Role postgres WITH PASSWORD 'fofia123'; 注意命令后面又分號
如果有多個可以指定某個實例
sudo -u postgres psql -p 5433
修改linux系統的postgres用戶的密碼(密碼與數據庫用戶postgres的密碼相同)
步驟一:刪除用戶postgres的密碼
sudo passwd -d postgre
步驟二:設置用戶postgres的密碼
sudo -u postgres passwd
按照提示輸入新密碼
3,開放默認端口5432 如果安裝了ufw 使用一下命令開放端口
sudo ufw allow 5432
4,保存文件並重新啟動PostgreSQL服務以使更改生效:
sudo service postgresql restart
PostgreSQL角色和驗證方法
PostgreSQL使用角色的概念來處理數據庫訪問權限,根據角色的設置方式,它可以代表一個數據庫用戶或一組數據庫用戶。
PostgreSQL支持多種身份驗證方法,最常用的方法是:
1、Trust-只要滿足pg_hba.conf中定義的條件,角色就可以不使用密碼進行連接。
2、Password-角色可以通過提供密碼進行連接,密碼可以存儲為scram-sha-256 md5和密碼(明文)。
3、Ident-僅支持TCP/IP連接,它通過獲得客戶端的操作系統用戶名以及可選的用戶名映射來工作。
4、Peer-與Ident相同,但僅在本地連接上受支持。
PostgreSQL客戶端身份驗證在名為pg_hba.conf的配置文件中定義,對於本地連接,PostgreSQL設置為使用對等身份驗證方法。
在安裝PostgreSQL時自動創建“postgres”用戶,該用戶是PostgreSQL實例的超級用戶,它等效於MySQL根用戶。
要以“postgres”身份登錄到PostgreSQL服務器,請切換到用戶postgres並使用psql實用程序訪問PostgreSQL提示符:
sudo su - postgres
psql
在這里,你可以與PostgreSQL服務器進行交互,要退出PostgreSQL shell,請輸入:
\q
你可以使用sudo命令訪問PostgreSQL提示符,而無需切換用戶:
sudo -u postgres psql
通常僅從本地主機使用postgres用戶。
創建PostgreSQL角色和數據庫
createuser命令允許你從命令行創建新角色,只有具有CREATEROLE特權的超級用戶和角色才能創建新角色。
在以下示例中,我們將創建一個名為kylo的新角色,一個名為kylodb的數據庫,並授予該角色對該數據庫的特權。
1、首先,通過以下命令來創建角色:
sudo su - postgres -c "createuser kylo"
2、接下來,使用createdb命令創建數據庫:
sudo su - postgres -c "createdb kylodb"
3、要向數據庫上的用戶授予權限,請連接到PostgreSQL shell:
sudo -u postgres psql
4、運行以下查詢:
grant all privileges on database kylodb to kylo;