我遇到了配置环境的问题,包括 postgres、pgadmin 和 nginx。所有这些服务都位于 docker 容器中,这是我的 docker-compose 文件:
version: '3'
services:
postgres:
image: postgres
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
pgadmin:
links:
- postgres:postgres
image: dpage/pgadmin4:3.0
environment:
PGADMIN_DEFAULT_EMAIL: 'postgres@pg.com'
PGADMIN_DEFAULT_PASSWORD: 'postgres'
ports:
- "5050:80"
restart: unless-stopped
nginx:
links:
- pgadmin:pgadmin
image: "nginx:1.13.12"
ports:
- "80:80"
volumes:
- ./nginxServers/server:/etc/nginx/conf.d/default.conf
Run Code Online (Sandbox Code Playgroud)
这是我的nginx.conf,放置在./nginxServers/server:
server {
listen 80;
server_name _;
location /pgadmin/ {
proxy_pass http://pgadmin/;
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这是一个非常简单的设置,允许我通过http://localhost/pgadmin使用 pgadmin 。
不幸的是,这不起作用。我可以通过http://127.0.0.1:5050看到 pgadmin Web 界面,但是当我导航到http://127.0.0.1/pgadmin时,所有样式和脚本都没有加载。
我还尝试了 nginx 配置中的另一个位置: …
在 pgAdmin 4 v3.1 上,我右键单击数据库,单击“还原”,选择一个备份文件,然后单击“执行”。
一个绿色的小弹出窗口显示“已创建恢复作业”,该窗口逐渐消失,但没有其他指示器显示正在进行恢复。曾经有一个窗口保持打开状态,指示恢复正在进行以及已过去的总时间。
如何查看当前的恢复作业/知道它何时完成?
我尝试重新启动电脑,重新安装 pgadmin,单击文件>重置布局,创建新数据库。
文档建议指示正在发生恢复的窗口应该是可见的。所以我想我遇到了一个错误?https://www.pgadmin.org/docs/pgadmin4/dev/restore_dialog.html
基于我之前的问题How to fix Automated Backup script for postgres [Window]? 。
我的电脑似乎存在一些问题,pgpass.conf在尝试使用 备份数据库时似乎没有提供所需的密码pg_dump。我发现我的情况很奇怪。但是,我不知道如何解决这个问题。
在我的电脑上,没有postgresql要保留的文件夹pgpass.conf-> 我尝试安装 Postgres,但看起来错误消息显示
运行安装后步骤时出现问题。安装可能无法正确完成。数据库集群初始化失败。
但是,我的电脑上已经有一个pgAdmin文件夹。
我尝试pgpass.conf通过使用dir /s | find /i "pgpass.conf"from root来查找c:\。
pgpass.conf结果看起来它甚至不存在于我的电脑上 -> 这就是为什么我尝试在文件夹pgAdmin而不是文件夹内创建一个新文件postgresql。
我也尝试设置一个环境变量,基于What do I need for pg_dumpall to work without a password? 。控制台上显示错误
“PGPASSWORD”未被识别为内部或外部命令
我尝试像这样添加/编辑脚本
@echo off
echo 192.168.1.161:5432:_wolfcom:postgres:1234>"%APPDATA%\pgAdmin\pgpass.conf"
set "root=C:\Program Files (x86)\pgAdmin 4\v3\runtime\"
cd /d "%root%"
PGPASSWORD=R0m3o^%%Ech0-5910^& pg_dumpall -h 192.168.1.161 …Run Code Online (Sandbox Code Playgroud) 我有一个用户just_one_schema_user。
在我的数据库中,我有两个模式:public和sample
我怎样才能让这个用户只看到sample?
这就是我所做的:
GRANT USAGE ON SCHEMA sample TO just_one_schema_user
REVOKE ALL PRIVILEGES ON SCHEMA public FROM just_one_schema_user
但用户仍然可以列出其中的表public并查看它们的结构。
我尝试保存它,但无法为文件命名,也无法单击“保存按钮”。这是一个非常简单的问题,但我没有找到答案。

这是docker-compose.yml文件:
version: '3'
services:
############################
# Setup database container #
############################
postgres_db:
image: postgres
restart: always
ports:
- ${POSTGRES_PORT}:${POSTGRES_PORT}
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- PGDATA=/var/lib/postgresql/data/pgdata
- POSTGRES_DB=${POSTGRES_DB}
volumes:
- ./data:/var/lib/postgresql/data
networks:
- db_network
pgadmin:
image: dpage/pgadmin4:4.19
restart: always
ports:
- 8001:8080/tcp
environment:
- PGADMIN_LISTEN_ADDRESS=0.0.0.0
- PGADMIN_LISTEN_PORT=8080
- PGADMIN_DEFAULT_EMAIL=${PGADMIN_DEFAULT_EMAIL}
- PGADMIN_DEFAULT_PASSWORD=${PGADMIN_DEFAULT_PASSWORD}
networks:
- db_network
networks:
db_network:
driver: bridge
Run Code Online (Sandbox Code Playgroud)
.env同一目录下有一个文件。
# The above refers to the name of the postgres container since using docker-compose
# This is because …Run Code Online (Sandbox Code Playgroud) 我已经安装了 PostgreSQL 12 和 pgAdmin 4。当我尝试运行 pgAdmin 4 时,出现致命错误“无法联系 pgAdmin 4 服务器”。我尝试以管理员身份运行它,删除“C:\Users\User\AppData\Roaming\pgAdmin”中的文件并将“C:\Program Files\PostgreSQL\12\bin”添加到系统环境变量中。我不知道我还能做什么。我确信 PostgreSQL 服务器正在工作,因为 services.msc 的服务正在运行。
以下是运行 pgAdmin4 的日志。我可以看到这里有问题,但我不知道如何解决这个问题:
Traceback (most recent call last):
File "C:/Program Files/pgAdmin 4/v4/web/pgAdmin4.py", line 217, in <module>
main()
File "C:/Program Files/pgAdmin 4/v4/web/pgAdmin4.py", line 199, in main
app.run(
File "C:/Program Files/pgAdmin 4/v4/venv/Lib/site-packages\flask\app.py", line 943, in run
run_simple(host, port, self, **options)
File "C:/Program Files/pgAdmin 4/v4/venv/Lib/site-packages\werkzeug\serving.py", line 1052, in run_simple
inner()
File "C:/Program Files/pgAdmin 4/v4/venv/Lib/site-packages\werkzeug\serving.py", line 996, in inner
srv = make_server(
File "C:/Program Files/pgAdmin 4/v4/venv/Lib/site-packages\werkzeug\serving.py", line …Run Code Online (Sandbox Code Playgroud) 我已经在 Ubuntu 20.04 上安装了 Postgres 和 PGAdmin4,但无法创建服务器并连接到数据库
正如我在几个解决方案中看到的,我将 pg_hba.conf 文件上的方法更改为 md5
# Database administrative login by Unix domain socket
local all postgres md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Run Code Online (Sandbox Code Playgroud)
我还连接到 psql,创建新用户,更改密码并通过运行重新启动服务器sudo systemctl restart postgresql
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, …Run Code Online (Sandbox Code Playgroud) 我有一个在 WSL2 上运行的 postgres 服务器,我通过 PgAdmin(v5 和 v4)访问它。直到今天一切都工作正常,但现在我在尝试从 PgAdmin 连接时不断收到错误消息:
could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5432?
Run Code Online (Sandbox Code Playgroud)
这些是 PgAdmin 中的服务器设置:
Host name/address: 127.0.0.1
Port: 5432
Run Code Online (Sandbox Code Playgroud)
我检查了 postgres 正在 WSL2 中的端口 5432 上运行,并listen_adresses设置'*'为postgresql.conf
最奇怪的部分是,我有一个 NestJS 应用程序连接到同一个数据库,并且它工作时没有任何错误,还下载了一个 VS Code 扩展,该扩展可以建立与 postgres 服务器的连接,并使用上面列出的凭据成功连接。
那么问题可能出在哪里呢?PgAdmin 出问题了吗?
编辑:重新启动 WSL2 并且它可以工作......
我使用 pgadmin 控制台选择数据库并使用备份选项对 PostgreSQL 数据库 Dev 进行了备份。
发布成功备份消息后,backup.sql 文件将被保存。
我们希望将此文件下载到本地。我们如何将该文件下载到本地系统?这些备份文件保存在哪里?
您能帮忙将这些文件复制到本地文件夹吗?