Postgres không thể tạo một vùng bảng


7

Tôi chỉ gắn một HD bên ngoài để lưu trữ không gian bảng mới của tôi.

postgres@vostro ~ $ df -k
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sdb1      480589520    71580 456082280   1% /mnt/DB

postgres@vostro ~ $ ls -l /mnt/DB/
total 4
drwxrwxrwx 2 postgres postgres 4096 May 25 17:02 postgres

demisc@vostro /mnt $ mount | grep -i sdb1
/dev/sdb1 on /mnt/DB type ext4 (rw,nosuid,nodev,relatime,data=ordered)

Tôi đã đưa ra tất cả các quyền cần thiết để posgres có thể tạo ts mới /mnt/DB/postgres. Đây là nhóm người dùng:

postgres@vostro ~ $ id
uid=123(postgres) gid=131(postgres) groups=131(postgres),112(ssl-cert),1000(demisc)

Xảy ra rằng khi chạy lệnh tạo vùng bảng tôi nhận được như sau:

postgres=# create tablespace ts_project location '/mnt/DB/postgres';
ERROR:  could not set permissions on directory "/mnt/DB/postgres": 
Permission denied

Tôi đang thiếu gì?

ls -ln /mnt/DB/postgres

trả về:

demisc@vostro /mnt/DB $ ls -ln /mnt/DB/postgres/
total 0

Mọi thứ trông có vẻ tốt. Không có lý do tại sao người dùng postgres không thể tạo không gian bảng. Nếu tôi chuyển sang postgres và cố gắng tạo tập tin hoặc thư mục trong đường dẫn thì nó hoạt động tốt.

Câu trả lời:


3

Tôi chỉ tìm thấy một giải pháp. Tôi đã thay đổi sự cho phép của /mnt/DB/postgres700:

postgres@vostro /mnt/DB $ ls -l
total 4
drwx------ 3 postgres postgres 4096 May 25 17:46 postgres

Bây giờ nó đã làm việc tạo ra ts

postgres@vostro /mnt/DB/postgres $ ls -l
total 4
drwx------ 2 postgres postgres 4096 May 25 17:46 PG_9.5_201510051

Câu trả lời Wiki cộng đồng được tạo ra từ một bình luận để lại bởi tác giả câu hỏi. Các bài đăng wiki cộng đồng đã được tặng cho cộng đồng với hy vọng những người khác sẽ chỉnh sửa chúng để cập nhật chúng, để thêm thông tin hữu ích và nói chung là cải thiện chất lượng của họ.


2

Trong khi tạo một vùng bảng, postgres thực hiện một chmod 0700cuộc gọi để kiểm tra thư mục bạn đã chỉ định tồn tại và có đúng chủ sở hữu.

Rõ ràng, trong trường hợp của bạn, người dùng hệ điều hành postgres không thể thực hiện cuộc gọi chmod này. Điều này cũng được xác nhận bởi thực tế là bạn có thể giải quyết vấn đề bằng cách đặt quyền chính xác theo cách thủ công (xem bình luận cho chính câu hỏi).

Thật không may, tôi khá khó khăn để nói những gì đã xảy ra với việc gán quyền, có thể đó là do SELinux tại nơi làm việc.

Liên kết đến một phần của mã nguồn đang chạy chmod. https://doxygen.postgresql.org/backend_2commands_2tablespace_8c.html#af268dfe1eb53bf570eceec80b993e66a

Thảo luận liên quan trong danh sách gửi thư postgres. Nó được coi là không phải là một lỗi trong năm 2008 https://www.postgresql.org/message-id/200804191238.m3JCcfcJ076060%40wwwmaster.postgresql.org


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.