Autorisations utilisateur pour créer la base de données PostgreSQL

24

Je travaille sur Ubuntu. Voici l'une de mes commandes.

$ psql -U kuser -d postgres

Ensuite, cela se connecte à la base de données. Mais depuis le terminal postgres quand j'essaye

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

Lorsque j'essaie une commande similaire dans Ubuntu, elle donne ce qui suit

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

Comment créer cette base de données?. J'ai des droits sudo et kuser n'est pas moi.

dinesh707
la source

Réponses:

44

Il semble que vous ayez un utilisateur de base de données nommé kuser, mais aucun utilisateur système ne porte ce nom. C'est pourquoi vous pouvez obtenir une invite postgres, mais sudo échoue.

Cet utilisateur n'est pas en mesure de créer une base de données car le compte n'a pas l' createdbautorisation.

Vous pouvez soit accorder cette autorisation à l'utilisateur utilisant le postgrescompte (le compte de gestion par défaut sur Ubuntu):

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

Ou utilisez simplement ce compte de gestion pour créer la base de données et spécifiez qu'il appartient au kusercompte:

sudo -u postgres createdb -O kuser kdb

Si cet utilisateur ne crée pas d'autres bases de données, je vous conseille d'utiliser cette dernière option, mieux vaut limiter les privilèges accordés au compte.

qqx
la source
sudo -u postgres psql -c 'alter user USER_NAME with createdb' postgressauvé ma journée :)
AbdulMomen عبدالمؤمن