PostgreSQL基本使用
PostgreSQL 是一款功能強大的開源關聯式資料庫管理系統,它支援多種平台,包括 Linux、Windows 和 macOS。在這節中,我們將介紹如何安裝 PostgreSQL。
使用package manager安裝
在大多數 Linux 系統上,你可以使用系統自帶的包管理器安裝 PostgreSQL。例如,在 Ubuntu 上,你可以使用以下命令安裝:
sudo apt update
sudo apt install postgresql postgresql-contrib
這將安裝 PostgreSQL 和一些附加元件。
在安裝完成後,你可以使用以下命令啟動 PostgreSQL 服務:
sudo systemctl start postgresql
你也可以設置 PostgreSQL 在開機時自動啟動:
sudo systemctl enable postgresql
新增使用者
在 PostgreSQL 中,你可以使用 CREATE USER 命令來新增用戶。例如,以下命令會創建一個名為 myuser 的用戶:
CREATE USER myuser WITH PASSWORD 'mypassword';
這個命令會創建一個名為 myuser 的用戶,並設置密碼為 mypassword。你可以將它們替換為自己想要的用戶名和密碼。
允許連線
首先,你需要修改 PostgreSQL 的設定文件。在 Ubuntu 上,設定文件位於 /etc/postgresql/14/main/postgresql.conf。你可以使用以下命令打開它:
sudo vim /etc/postgresql/14/main/postgresql.conf
在設定文件中,尋找 listen_addresses 這一行,將其設置為 ‘*’,表示允許所有 IP 位址連接:
listen_addresses = '*'
然後,你還需要在 pg_hba.conf 文件中添加一個訪問授權條目。該文件位於 /etc/postgresql/14/main/pg_hba.conf。你可以使用以下命令打開它:
sudo vim /etc/postgresql/14/main/pg_hba.conf
在文件末尾,添加以下行:
host all all 0.0.0.0/0 md5
這個條目表示允許所有用戶使用所有的資料庫連接到 PostgreSQL,並使用 md5 編碼方式進行驗證。
完成後,請重新啟動 PostgreSQL 服務以應用這些更改:
sudo systemctl restart postgresql
現在,其他機器也可以使用以下命令連接到 PostgreSQL:
psql -h <server_ip> -U <username> -d <database>
其中, 是 PostgreSQL 伺服器的 IP 位址, 是用戶名, 是資料庫名稱。
使用容器安裝
除了使用包管理器,你還可以使用容器來安裝 PostgreSQL。這種方法的好處是可以避免干擾系統本身。以下是使用 Docker 安裝 PostgreSQL 的方法:
首先,下載最新版本的 PostgreSQL 映像檔:
拉取 PostgreSQL 映像:
docker pull postgres:15.1-alpine
創建 Docker Volume:
接著,創建一個 Docker Volume來持久存儲 PostgreSQL 數據:
docker volume create postgres_data
運行 PostgreSQL 容器並掛載Volume:
docker run --name postgres15 -p 5432:5432 -e POSTGRES_USER=root -e POSTGRES_PASSWORD=test -d -v postgres_data:/var/lib/postgresql/data postgres:15.1-alpine
這個命令會在容器中啟動 PostgreSQL 服務,並映射本機端口 5432 到容器端口 5432。在上面的命令中,POSTGRES_USER 和 POSTGRES_PASSWORD 是環境變數,它們用於設置 PostgreSQL 的用戶名和密碼。你可以將它們替換為自己想要的用戶名和密碼。
這個命令中,-v postgres_data:/var/lib/postgresql/data
部分就是將創建的卷掛載到容器的 PostgreSQL 數據目錄。
要測試是否成功啟動 PostgreSQL 服務,可以使用以下命令連接到容器:
docker exec -it postgres15 psql -U root
這個命令會進入到 PostgreSQL 的命令列介面,如果能夠成功連接,則表示 PostgreSQL 服務已經啟動成功。
WSL 使用者注意事項
如果你使用的是 Windows Subsystem for Linux (WSL),則需要特別注意。由於 WSL 的網路處理方式,將 listen_addresses 設置為 ‘*’ 可能無法正常工作。為了解決這個問題,你需要在設定文件中指定一個具體的 IP 位址。
首先,使用以下命令查找 WSL 的 IP 位址:
ip addr show eth0
在輸出中,尋找 inet 地址,它的格式應該為 172.28.x.x/20。這個 IP 位址是 WSL 的 IP 位址。
然後,打開 PostgreSQL 的設定文件,將 listen_addresses 設置為這個 IP 位址:
listen_addresses = '172.28.x.x'
完成後,重新啟動 PostgreSQL 服務以應用這些更改:
sudo systemctl restart postgresql
現在,你可以使用其他機器連接到 WSL 上運行的 PostgreSQL 了。
透過DBeaver連接至WSL上的PostgreSQL
當你在 WSL 上安裝和運行 PostgreSQL 之後,你可以使用 DBeaver 這樣的圖形化工具來連接到 PostgreSQL 伺服器,以進行更方便的資料庫管理和查詢。以下是如何在 DBeaver 中連接到 WSL 上運行的 PostgreSQL 的步驟:
- 在 DBeaver 中創建一個新的 PostgreSQL 連接。在 DBeaver 中,選擇「Database」-「New Database Connection」,然後選擇 PostgreSQL 作為資料庫類型。
- 設置 PostgreSQL 連接的詳細資訊。在連接設置中,輸入以下資訊:
- 主機名稱:WSL 的 IP 位址(在前面的段落中已經提到如何找到 WSL 的 IP 位址)
- 埠號:5432
- 用戶名:PostgreSQL 的用戶名(默認為 postgres)
- 密碼:PostgreSQL 的密碼(在安裝 PostgreSQL 時設置)
- 測試連接是否成功。在設置完 PostgreSQL 連接後,你可以點擊「Test Connection」按鈕,以測試是否成功連接到 PostgreSQL。
完成以上步驟後,你現在可以在 DBeaver 中使用圖形化界面來管理和查詢 PostgreSQL 資料庫了。這將使你的工作更加方便和高效,並減少出錯的風險。