文章目录
- 通过后端连接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 | ✅ 通常需要 | 控制监听地址 |
授权访问库和表 | ✅ 是 | 否则登录后也看不到数据 |