PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cơ sở dữ liệu postgres đang chạy trong docker vẫn bị treo

Điều này đang xảy ra do quyền của người dùng không khớp trong vùng chứa docker.

Liệt kê các tệp có liên quan trong vùng chứa:

$ docker exec <container> ls -l /var/lib/postgresql/data/pg_stat_tmp
-rw------- 1 root     root     [...] db_0.stat
-rw------- 1 root     root     [...] db_1.stat
-rw------- 1 root     root     [...] db_2.stat
-rw------- 1 postgres postgres [...] global.stat

chúng ta có thể thấy rằng tất cả db_*.stat các tệp được sở hữu bởi root:root , trong khi global.stat thuộc sở hữu của postgres:postgres .

Kiểm tra người dùng docker cung cấp cho chúng tôi:

$ docker exec <container> whoami
root

Vì vậy, chúng tôi muốn tất cả các tệp này thuộc quyền sở hữu của người dùng postgres. Thật may mắn, điều này khá dễ dàng! Chỉ cần đặt người dùng thành postgres và khởi động lại!

Trong một tệp dockerfile:

USER postgres

Sử dụng docker-soạn:

services:
  postgres:
    image: postgres:13
    user: postgres


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Số nguyên nằm ngoài phạm vi trong cơ sở dữ liệu PostgreSQL

  2. Lỗi khi đặt thuộc tính cấu hình cơ sở dữ liệu cho IDatabaseConnection (HSQLDB)

  3. Tính tổng trên các phân vùng với các chức năng cửa sổ

  4. Chèn giá trị trường daterange vào bảng PostgreSQL thông qua JDBC

  5. Không thể kết nối với PostgreSQL bằng PHP pg_connect ()