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

Vấn đề về quyền với PostgreSQL trong vùng chứa docker

Câu trả lời khác thực sự chỉ ra nguyên nhân gốc rễ của vấn đề, tuy nhiên trang trợ giúp mà nó trỏ đến không chứa giải pháp. Đây là những gì tôi đã nghĩ ra để làm cho công việc này phù hợp với tôi:

  1. khởi động vùng chứa bằng cách sử dụng tệp soạn nhạc do docker thông thường của bạn, thao tác này sẽ tạo thư mục có uid được mã hóa cứng:gid (999:999)
version: '3.7'

services:
  db:
    image: postgres
    container_name: postgres
    volumes:
      - ./data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: fake_database_user
      POSTGRES_PASSWORD: fake_database_PASSWORD
  1. dừng vùng chứa và thay đổi thủ công quyền sở hữu thành uid:gid bạn muốn (tôi sẽ sử dụng 1000:1000 cho ví dụ này
$ docker stop postgres
$ sudo chown -R 1000:1000 ./data 
  1. Chỉnh sửa tệp docker của bạn để thêm uid:gid mong muốn của bạn và khởi động lại bằng docker -omp (lưu ý người dùng user: )
version: '3.7'

services:
  db:
    image: postgres
    container_name: postgres
    volumes:
      - ./data:/var/lib/postgresql/data
    user: 1000:1000
    environment:
      POSTGRES_USER: fake_database_user
      POSTGRES_PASSWORD: fake_database_password

Lý do bạn không thể chỉ sử dụng user: ngay từ đầu là nếu hình ảnh chạy với tư cách người dùng khác, nó không thể tạo tệp dữ liệu.

Trên trang tài liệu hình ảnh , nó đề cập đến một giải pháp để thêm một khối lượng để hiển thị /etc/passwd tệp ở dạng chỉ đọc trong hình ảnh khi cung cấp --user Tuy nhiên, tùy chọn đó không hoạt động với tôi với hình ảnh mới nhất, vì tôi gặp lỗi sau. Trên thực tế, không có giải pháp nào trong ba giải pháp được đề xuất phù hợp với tôi.

initdb: error: could not change permissions of directory "/var/lib/postgresql/data": Operation not permitted


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL bỏ qua dấu gạch ngang khi đặt hàng

  2. Sao chép một bản ghi, sau đó sử dụng id gia tăng tự động của nó cho các hoạt động tiếp theo

  3. Cách thiết lập kết nối từ xa với PostgreSQL

  4. Vị trí cột id trong Postgresql có quan trọng không?

  5. Django Kết hợp Tìm kiếm __unaccent và __search