web-dev-qa-db-fra.com

createdb: la création de la base de données a échoué: ERROR: permission refusée pour créer la base de données

Je suis assez confus au sujet de utilisateur root , super utilisateur , utilisateur et permissions ! Je ne suis pas en mesure de créer une base de données à l'intérieur de l'utilisateur "athleticu". Voici les commandes que j'ai utilisées: -

athleticu@ip-172-30-4-103:/home/ubuntu$ createdb -T template0 simple_db1
createdb: database creation failed: ERROR:  permission denied to create database
athleticu@ip-172-30-4-103:/home/ubuntu$ Sudo createdb -T template0 simple_db1
Sudo: unable to resolve Host ip-172-30-4-103
createdb: could not connect to database template1: FATAL:  role "root" does not exist

S'il vous plaît, quelqu'un clarifie mes doutes et dites-moi ce que je devrais écrire! 

10
SonamGupta

Hey j'ai déjà résolu ceci. Ce que vous devez faire est de vous connecter d'abord en tant qu'utilisateur postgres comme suit:

$ su postgres

$ psql

postgres=# alter user athleticu createdb;
ALTER ROLE

J'espère que ça vous aide :)

25
SonamGupta

Tapez \du dans psql et vous verrez une liste de tous les utilisateurs enregistrés et du type de privilèges dont ils disposent. Afin d’accorder des privilèges à l’utilisateur connecté (par exemple, 'utilisateur1'), je devais me déconnecter et me connecter à l’un des rôles de superutilisateur de cette liste (par exemple, 'utilisateur2'), en procédant comme suit: commander: 

    psql -U 'user2' -h localhost 'database2'

où 'base de données2' est le nom de celui pour lequel le superutilisateur spécifique 'utilisateur2' a les privilèges sur . Une fois connecté en tant que superutilisateur, vous pouvez accorder des privilèges à 'utilisateur1' de: 

    ALTER ROLE user1 WITH CREATEDB 

ou 

    ALTER ROLE user1 WITH SUPERUSER

Puis reconnectez-vous en tant qu'utilisateur1, qui est maintenant un superutilisateur.

Ce blog a été utile, ainsi que ce link .

14
polyccon

Le root user est un compte sur le système indépendant de Postgres. Il n'y a qu'un seul utilisateur root.

Un superutilisateur est un compte Postgres avec accès à tout. Il peut y avoir beaucoup de superutilisateurs.

Les comptes système et les comptes Postgres sont des choses différentes. Toutefois, sauf si vous spécifiez un nom d'utilisateur Postgres lorsque vous vous connectez à la base de données (via des utilitaires tels que psql, createdb, dropdb ou toute autre méthode), il utilisera le nom de l'utilisateur système actuel dans l'espoir qu'il compte Postgres correspondant portant le même nom. L'utilisateur root n'a pas, par défaut, de compte correspondant dans Postgres.

Lorsque vous installez Postgres sur * nix, il crée un superutilisateur nommé postgres et un utilisateur système nommé postgres.

Par conséquent, lorsque vous devez faire quelque chose avec Postgres en tant que superutilisateur intégré, vous avez deux options:

  1. Vous pouvez Sudo su - postgres devenir postgres utilisateur système et exécuter votre commande (createdb, psql, etc.). Étant donné que l'utilisateur système a le même nom que le superutilisateur de la base de données, votre commande se connectera sous le compte approprié.
  2. Vous pouvez spécifier le nom d'utilisateur à exécuter comme avec le commutateur -U, par exemple psql -U postgres ....

Selon les paramètres d'authentification de votre serveur Postgres, il peut être nécessaire de saisir un mot de passe avec l'une des méthodes de connexion ou les deux.

4
dmfay

Lorsque vous avez une nouvelle installation de PostgreSQL, vous pouvez créer votre utilisateur avec certains droits (voir la documentation de createuser ):

my-user> Sudo su - postgres -c "createuser <my-user> --createdb"

Cela permettra à my-user de créer des bases de données exactement comme ceci:

my-user> createdb <my-db>

Si vous voulez que le my-user puisse tout faire, utilisez plutôt le drapeau --superuser:

my-user> Sudo su - postgres -c "createuser <my-user> --superuser"
0
nyxz