Trong Postgresql, sau pg_dump, các đặc quyền truy cập trên cơ sở dữ liệu không được khôi phục


8

Giả sử người dùng foo sở hữu một cơ sở dữ liệu và người dùng foo đã cấp cho người dùng thanh tất cả các đặc quyền truy cập trên cơ sở dữ liệu

gee=> \l
                              List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 gee       | foo      | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/foo              +
           |          |          |             |             | foo=CTc/foo          +
           |          |          |             |             | bar=CTc/foo

Chúng tôi kết xuất cơ sở dữ liệu này,

$ pg_dump -U foo -v -f gee.dump gee

Trong cơ sở dữ liệu gee thanh người dùng đã tạo ra một lược đồ. Vì vậy, vì tất cả những người dùng này, chúng tôi khôi phục gee cơ sở dữ liệu dưới dạng postgres của người dùng (sau khi người dùng foo đã tạo một cơ sở dữ liệu goo),

$ sudo -u postgres psql -d goo -f gee.dump

Thanh người dùng không có quyền truy cập trên cơ sở dữ liệu. Nhưng bên trong cơ sở dữ liệu, mọi đặc quyền đều ổn, đối với tất cả người dùng, trên các lược đồ và bảng.

goo=> \l
                              List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 goo       | foo      | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

Tại sao các đặc quyền truy cập trên cơ sở dữ liệu không được khôi phục?


thay vào đó hãy thử sử dụng một siêu người dùng khi pg_dump.
franc

1
Nó có phát ra một loạt các lỗi trong pg_dump không? Giống như, nói, lỗi về GRANT và người dùng không tồn tại?
Craig Ringer

@francs, nó không giúp được gì.
ericj

@CraigRinger Không, không có lỗi.
ericj

Câu trả lời:


6

Tại sao các đặc quyền truy cập trên cơ sở dữ liệu không được khôi phục?

Đó là một lỗi, hoặc giám sát thiết kế . Mặc dù người trả lời báo cáo đó không nghĩ vậy.

pg_dumpall --globals-onlykhông đổ quyền trên cơ sở dữ liệu. Cũng như thếpg_dump là một phần của bãi chứa cơ sở dữ liệu.

Vì vậy, các khoản tài trợ trên cơ sở dữ liệu chỉ được bao gồm trong một đầy đủ pg_dumpall .

Tôi sẽ làm cho một số tiếng ồn về nó bằng cách chọc chủ đề này .

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.