文章目錄
- 通過后端連接Opengauss數據庫的方法
- 一、為什么默認不能訪問?
- 二、要讓普通用戶從宿主機訪問數據庫,需要以下幾個步驟:
- 1. 使用 `omm` 超級用戶登錄數據庫
- 2. 創建一個應用程序專用用戶,并設置密碼
- 3. 提供給應用程序專用用戶對應的連接與訪問權限
- 4. 修改認證配置文件 `pg_hba.conf`(容器內)
- 5. 修改數據庫監聽配置(如有需要)
- 6. 重啟數據庫服務(或容器)
- 7. 從宿主機連接數據庫(用普通用戶)
- 三. 總結
通過后端連接Opengauss數據庫的方法
一、為什么默認不能訪問?
openGauss 和 PostgreSQL 出于安全性考慮:
- 默認只允許
omm
本地訪問(Unix socket) - 普通用戶沒有數據庫登錄權限(沒有用戶記錄)
- 沒有遠程訪問權限(
pg_hba.conf
沒有相應規則)
二、要讓普通用戶從宿主機訪問數據庫,需要以下幾個步驟:
1. 使用 omm
超級用戶登錄數據庫
docker exec -it opengauss bash
su - omm
gsql -d postgres -U omm -W
2. 創建一個應用程序專用用戶,并設置密碼
CREATE USER app_user WITH PASSWORD 'App@1234';
3. 提供給應用程序專用用戶對應的連接與訪問權限
-- 授予連接權限
GRANT CONNECT ON DATABASE postgres TO app_user;-- 授予所有表的權限
GRANT USAGE ON SCHEMA public TO app_user;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO app_user;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO app_user;-- 設置默認權限,使未來創建的表也自動授權給app_user
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL PRIVILEGES ON TABLES TO app_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL PRIVILEGES ON SEQUENCES TO app_user;
4. 修改認證配置文件 pg_hba.conf
(容器內)
這個文件決定了誰能通過什么方式從哪里登錄數據庫。
路徑通常是:
/var/lib/opengauss/data/pg_hba.conf
在文件末尾添加一行(確保允許遠程訪問):
# TYPE DATABASE USER ADDRESS METHOD
host all testuser 0.0.0.0/0 scram-sha-256
或如果只允許本機訪問(更安全):
host all testuser 127.0.0.1/32 scram-sha-256
5. 修改數據庫監聽配置(如有需要)
查看 postgresql.conf
(同目錄)是否包含:
listen_addresses = '*'
port = 5432
6. 重啟數據庫服務(或容器)
docker restart opengauss
7. 從宿主機連接數據庫(用普通用戶)
gsql -d postgres -U testuser -W -h localhost -p 5432
三. 總結
操作 | 是否必須 | 說明 |
---|---|---|
創建用戶 | ? 是 | 普通用戶必須在數據庫中存在 |
設置密碼 | ? 是 | 否則不能遠程登錄 |
修改 pg_hba.conf | ? 是 | 控制是否允許連接 |
修改 postgresql.conf | ? 通常需要 | 控制監聽地址 |
授權訪問庫和表 | ? 是 | 否則登錄后也看不到數據 |