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
官方文件
中文教學
- 如何使用 Docker 安裝 PostgreSQL ? | 點燈坊
- Docker筆記 - 進入Container,建立並操作 PostgreSQL Container | by Albert Hg | alberthg-docker-notes | Medium
相關工具
- Awesome Database GUI Client - GUI 管理工具比較
- pgAdmin - PostgreSQL 官方 Web GUI