Tôi phải thiếu một cái gì đó liên quan đến việc thiết lập PostgreSQL. Những gì tôi muốn làm là tạo nhiều cơ sở dữ liệu và người dùng tách biệt với nhau để một người dùng cụ thể chỉ có quyền truy cập vào cơ sở dữ liệu mà tôi chỉ định. Tuy nhiên, từ những gì tôi có thể xác định, bất kỳ người dùng nào được tạo đều có quyền truy cập vào tất cả các cơ sở dữ liệu mà không có bất kỳ khoản trợ cấp cụ thể nào được đưa ra.
Đây là những gì tôi làm trên Ubuntu Server 12.04:
- apt-get cài đặt postgresql
- sudo -u postgres creatuser -DRSP mike1 (Chỉ định mật khẩu cho người dùng mới)
- sudo -u postgres createdb data1
- psql -h localhost -U mike1 data1 (Chỉ định mật khẩu cho người dùng mike1 để đăng nhập)
Có vẻ như người dùng mới "mike1" không gặp vấn đề gì khi kết nối với cơ sở dữ liệu "data1" và tạo bảng, v.v. Và điều này không chạy bất kỳ lệnh GRANT nào cả (và chủ sở hữu của "data1" là "postgres" vì tôi không chỉ định chủ sở hữu ở bước 3). Đây thực sự là cách nó được cho là để làm việc?
Điều tôi muốn làm là cấp cho mike1 quyền truy cập đầy đủ vào data1 và sau đó lặp lại điều này cho nhiều người dùng và cơ sở dữ liệu hơn, đảm bảo rằng người dùng chỉ có quyền truy cập vào một (hoặc có thể một vài) cơ sở dữ liệu mà tôi chọn.