跳至主要内容

import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';

[PGSQL] Basic setup

PostgreSQL Server

初始安裝

init.sh
export PGSQL_HOME="$KYWK_HOME/workspace/docker/postgres"

docker run --name postgres -d \
-v $PGSQL_HOME/data:/var/lib/postgresql/data \
-p 5432:5432 \
-e POSTGRES_DB=sandbox \
-e POSTGRES_USER=admin \
-e POSTGRES_PASSWORD='<YourStrongPassword>' \
postgres:15

使用 docker run 建立 container, 若本機沒有 image, 會自動從 Docker Hub 下載.

  • —name: container 名字以方便識別 postgres (若省略, Docker 會自動以亂數建立)
  • -d: detach 建立 container 後就脫離目前 process
  • -v: volume PostgresSQL 的資料放在 container 內的 /var/lib/postgresql/data 目錄. 這個設定讓 docker mapping host ~/workspace/docker/postgres 到 container 內的 /var/lib/postgresql/data. 如此 container 刪除後, 資料仍然會留在 host.
  • -p: port mapping host 與 container post 的對應, 格式為 host port : container port. PostgreSQL 預設 port 為 5432
  • -e: environment 設定 PostgreSQL 所需要的環境變數
    • POSTGRES_DB: database 名稱
    • POSTGRES_USER: 帳號
    • POSTGRES_PASSWORD: 密碼
  • postgress:15: image 名稱

啟用 / 停止服務

docker start postgres
docker stop postgres
Docker-compose.yml
version: "3"

services:
postgres:
image: postgres:latest
container_name: MyPostgres
volumes:
- ${HOST_DIR}:/var/lib/postgresql/data
expose:
- 5432
ports:
- ${POSTGRES_PORT}:5432
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}

安裝

brew install postgresql

啟用 / 停止服務

brew service start postgresql
brew service stop postgresql

PostgreSQL Client

CLI client

Install libpq & symlink psql (and other libpq tools) into /usr/local/bin

brew install libpq
brew link --force libpq

psql connection

In order to connect to your PostgreSQL server, we’ll need the following connection params:

  • Hostname
  • Port
  • Username
  • Password
  • Database name

Option 1, the Unix-like cli arguments

psql -h [HOSTNAME] -p [PORT] -U [USERNAME] -W -d [DATABASENAME]

or, make a connection URI as following:

psql postgres://[USERNAME]:[PASSWORD]@[HOSTNAME]:[PORT]/[DATABASENAME]?sslmode=require

DB User Management

建立新使用者

-- 建立新使用者
CREATE USER myuser WITH PASSWORD '<strong_password>';

-- 建立資料庫
CREATE DATABASE mydatabase OWNER myuser;

-- 授予權限
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;

權限管理

-- 授予特定表格權限
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE mytable TO myuser;

-- 授予 schema 權限
GRANT USAGE ON SCHEMA public TO myuser;
GRANT CREATE ON SCHEMA public TO myuser;

See Also

官方文件

中文教學

相關工具