2025.1.10学习笔记

在docker-compose文件中引用网络后,首先需要创建,紧接着需要在配置文件中明确定义。

networks:
  xxx_network:
    external: true

pgadmin的5050权限问题:

在Docker容器中运行的pgAdmin 4有关5050权限的几个重要事项:

用户和组权限

pgAdmin在容器中以UID 5050(用户pgadmin)和GID 5050(组pgadmin)运行[1][4]。这是一个安全性设计,避免以root权限运行程序。

目录权限要求

  • pgAdmin需要对其工作目录有读写权限[1]
  • 当挂载卷时,需要确保主机上的目录具有正确的所有权[4]
  • 可以通过以下命令设置权限:
sudo chown -R 5050:5050 <host_directory>

权限特点

  • pgAdmin启动时会检查所需目录,并尝试将权限设置为安全模式(0700权限)[1]
  • 这意味着只有5050用户可以编辑卷中的数据,即使其他用户属于5050组也无法访问[1]

解决方案

如果在本地开发环境中遇到权限问题,有两种处理方式:

  1. 对于不太注重安全性的本地环境,可以使用:chmod 777 -R pgadmin_dat/[2]
  2. 对于需要更高安全性的环境,使用:chmod 5050 -R pgadmin_dat/[2]

Citations:
[1] PostgreSQL: Re: Problem related to volume creation to pgadmin 4 Docker image
[2] ubuntu - Docker dpage/pgAdmin - permission denied /var/lib/pgadmin/storage - Stack Overflow
[3] Обсуждение: Problem related to volume creation to pgadmin 4 Docker image : Компания Postgres Professional
[4] Container Deployment — pgAdmin 4 8.14 documentation
[5] https://event-driven.io/en/automatically_connect_pgadmin_to_database/
[6] Version 4.16 — pgAdmin 4 8.14 documentation

via perplexity

不由得感慨图片类别的文字的不友好,无论是对于检索还是其他,带有文字的内容,最好还是以纯文本呈现较好。

记录自己的学习,还是公开学习过程较好。

在语雀中记录,始终是被锁住的。

自建做好定期备份即可。

postgresql容器默认会创建一个名为postgres的数据库。

claude:

是的,PostgreSQL 容器默认会创建一个名为 “postgres” 的数据库。这是 PostgreSQL 的标准行为,即便你在 environment 变量中通过 POSTGRES_DB 指定了其他数据库(在你的例子中是 “pgsql”)。

所以在你的设置中,容器启动后会有两个数据库:

  1. “postgres” - 默认创建的系统数据库
  2. “pgsql” - 通过 POSTGRES_DB 环境变量创建的数据库

这就解释了为什么在你的 pgAdmin 界面中可以看到这两个数据库。“postgres” 数据库通常用作默认的系统数据库,而 “pgsql” 是为你的应用程序准备的数据库。你可以选择在任意一个数据库中创建你的表格,不过建议在 “pgsql” 数据库中进行开发,保持 “postgres” 数据库作为系统默认数据库。

笔记还是暂时私有。公开化笔记我得适应适应。

寒假一晃而过,每天都会在语雀留下一篇当天的收获。

希望2025年一切顺利,2026年能觅得一份还算ok的工作。