Uprawnienia użytkownika do tworzenia bazy danych PostgreSQL

24

Pracuję nad Ubuntu. Oto jedno z moich poleceń.

$ psql -U kuser -d postgres

Następnie łączy się z bazą danych. Ale z terminalu Postgres, kiedy próbuję

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

Kiedy próbuję podobnego polecenia w Ubuntu, daje on następujące informacje

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

Jak utworzyć ten DB ?. Mam prawa sudo i kuser to nie ja.

dinesh707
źródło

Odpowiedzi:

44

Wygląda na to, że masz użytkownika bazy danych o nazwie kuser, ale nie ma użytkownika o takiej nazwie. Dlatego możesz otrzymać monit Postgres, ale sudo nie działa.

Ten użytkownik nie może utworzyć bazy danych, ponieważ konto nie ma createdbuprawnień.

Możesz udzielić tego uprawnienia użytkownikowi, korzystając z postgreskonta (domyślne konto zarządzania w systemie Ubuntu):

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

Lub po prostu użyj tego konta zarządzania, aby utworzyć bazę danych i określić, że należy ona do kuserkonta:

sudo -u postgres createdb -O kuser kdb

Jeśli ten użytkownik nie będzie tworzył innych baz danych, radzę skorzystać z tej drugiej opcji, lepiej ograniczyć uprawnienia przyznane dla konta.

qqx
źródło
sudo -u postgres psql -c 'alter user USER_NAME with createdb' postgressave my day :)
AbdulMomen عبدالمؤمن