Quyền người dùng để tạo PostgreSQL DB


24

Tôi đang làm việc trên Ubuntu. Sau đây là một trong những lệnh của tôi.

$ psql -U kuser -d postgres

Sau đó, điều này kết nối với cơ sở dữ liệu. Nhưng từ thiết bị đầu cuối postgres khi tôi cố gắng

postgres=> CREATE DATABASE kdb;
ERROR:  permission denied to create database

Khi tôi thử một lệnh tương tự trong Ubuntu, nó sẽ đưa ra như sau

$ sudo -u kuser createdb kdb
sudo: unknown user: kuser
sudo: unable to initialize policy plugin

Làm cách nào để tạo DB này? Tôi có quyền sudo và kuser không phải là tôi.

Câu trả lời:


44

Dường như bạn có một người dùng cơ sở dữ liệu có tên kuser, nhưng không có người dùng hệ thống nào có tên đó. Đây là lý do tại sao bạn có thể nhận được lời nhắc postgres, nhưng sudo không thành công.

Người dùng đó không thể tạo cơ sở dữ liệu vì tài khoản không có createdbquyền.

Bạn có thể cấp quyền đó cho người dùng bằng postgrestài khoản (tài khoản quản lý mặc định trên Ubuntu):

sudo -u postgres psql -c 'alter user kuser with createdb' postgres

Hoặc chỉ sử dụng tài khoản quản lý đó để tạo cơ sở dữ liệu và chỉ định rằng nó thuộc sở hữu của kusertài khoản:

sudo -u postgres createdb -O kuser kdb

Nếu người dùng đó sẽ không tạo các cơ sở dữ liệu khác, tôi khuyên bạn nên sử dụng tùy chọn thứ hai, tốt hơn là giới hạn các đặc quyền được cấp cho tài khoản.


sudo -u postgres psql -c 'alter user USER_NAME with createdb' postgresđã cứu ngày của tôi :)
AbdulMomen عبدالمؤمن 26/11/11
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.