IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Se connecter en tant qu'utilisateur postgres avec un script bash


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 96
    Par défaut Se connecter en tant qu'utilisateur postgres avec un script bash
    Bonjour à tous,

    j'aimerai pouvoir me connecter en tant qu'utilisateur postgres via un script bash. Le problème est que j'ai besoin d'entrer un mot de passe pour passer en utilisateur postgres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sudo -i -u postgres
    -> mot de pass

    Une fois connecter j'aimerai supprimer puis recréer des bases (ça je sais faire). Mais comment puis-je me connecter / Déconnecter en tant qu'utilisateur postgres via un script bash ? En sachant que la connection nécessite d'entrer un mot de passe.

    Merci à vous

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    Bonjour,

    Si le script bash s'execute directement sur la machine sur laquelle tu veux passer en postgres , tu peux utiliser la commande suivante en ayant au préalable configuré ton sudoers:
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo su - postgres -c "commande_a_executer"
    Sinon, si c'est depuis une machine distante, il faut installer une clé ssh, puis passer par ssh.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Salut
    Généralement tu n'as pas besoin de "devenir" Postgres pour te connecter à une bdd Postgres. Il faut différencier le "compte Unix" (propriétaire des dossiers et répertoires) et le "compte bdd" sous lequel on se connecte sur une bdd.

    Et pour te connecter sur une bdd sous le "compte bdd Postgres", suffit de taper psql -U postgres.

    Maintenant si le compte bdd Posgres est protégé par un mot de passe, alors tu peux autoriser la connexion depuis ton compte en créant un fichier ".pgpass" contenant les différents comptes bdd que tu as envie d'utiliser et leurs mot de passe associés (voir doc Postgres pour plus de détails).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Je ne suis pas totalement d'accord avec le principe de séparation des users Postgres et Unix, PostgreSQL ne se base que sur des utilisateurs Unix contrairement à d'autres SGBDR comme MySQL.

    Par contre je suis d'accord avec le fait que le lanceur du script ne doit pas se loguer avec un autre compte (au niveau Unix) pour pouvoir accéder à la base. Le mieux serait même de créer des utilisateurs et des droits spécifiques, en phase avec l'utilisateur qui lance le script.

    Exemple si "toto" lance un script qui doit accéder a une table t en SELECT, tu créer un utilisateur "toto" dans Postgres qui a le droit de faire un SELECT sur la table t uniquement et ainsi de suite... avec la conf par défaut, tu n'aura pas besoin de mot de passe vu que tu sera déjà logué avec le bon compte utilisateur au niveau de bash. Il suffira de lancer la commande psql sans avoir à spécifier un utilisateur.

    Normalement on n'utilise jamais le compte postgres, jamais (sauf pour créer les utilisateurs).

    Sinon de manière générale, tu as expect pour compléter une commande par un mot de passe sans avoir à le saisir ou ce genre de choses.

    Idriss

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 96
    Par défaut
    Bonjour,

    merci pour vos réponses, effectivement je n'utilise pas la bonne stratégie, pour me connecter à ma base de données je peux simplement faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    psql -U user -p 5432 -d ma_base -h localhost
    au lieu de passer en utilisateur postgres puis de lancer la commande ci dessus...

    Néanmoins je n'arrive pas à supprimer des bases depuis mon script bash, il est possible de se connecter à une base sans passer par l'utilisateur postgres mais est-ce la même chose pour la création / supprésion de bases ?

    A quoi devrait ressembler la commande pour supprimer une base de données "ma_base" appartement à l'utilisateur "user" depuis un script bash ?


    EDIT :

    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DB=mabase
    DBHOST=localhost
    DBUSER=user
     
    dropdb -e "$DB" -h "$DBHOST" -U "$DBUSER";

    Merci à tous

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ok.Idriss Voir le message
    Je ne suis pas totalement d'accord avec le principe de séparation des users Postgres et Unix, PostgreSQL ne se base que sur des utilisateurs Unix contrairement à d'autres SGBDR comme MySQL.
    C'est vrai que si on tape psql sans rien, le serveur Postgres associera la connexion au user qui la lance exactement comme si on tapait psql -U $LOGNAME. En ce sens il y a effectivement un lien entre le user Unix et le serveur. Mais ce que je voulais dire, c'est qu'il est tout à fait possible de créer des user Postgres (le terme exact est "rôle") qui n'ont aucun lien avec le monde Unix. C'est en ce sens que je parlais de "différencier" les choses.

    Citation Envoyé par RTK45 Voir le message
    merci pour vos réponses, effectivement je n'utilise pas la bonne stratégie, pour me connecter à ma base de données je peux simplement faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    psql -U user -p 5432 -d ma_base -h localhost
    au lieu de passer en utilisateur postgres puis de lancer la commande ci dessus...
    yep. Et tu peux même élaguer le "-p 5432"...

    Citation Envoyé par RTK45 Voir le message
    Néanmoins je n'arrive pas à supprimer des bases depuis mon script bash, il est possible de se connecter à une base sans passer par l'utilisateur postgres mais est-ce la même chose pour la création / supprésion de bases ?
    Oui. Faut juste que le rôle en question ait les droits de création de bdd. Ca se fait au niveau du "create role". Voici grosso-modo ses options
    • superuser/nosuperuser: le rôle créé sera/ne sera pas superuser (comme le rôle postgres)
    • createdb/nocreatedb: le rôle créé aura/n'aura pas le droit de créer (et aussi supprimer ça va avec) des bases de données (mais s'il peut supprimer, il ne pourra évidemment supprimer que les bdd qu'il aura créé
    • createrole/noreaterole: le rôle créé aura/n'aura pas le droit de créer d'autres rôles
    • inherit/noinherit: d'autres rôles futurs pourront/ne pourront pas hériter des droits du rôle créé
    • login/nologin: le rôle créé pourra/ne pourra pas se connecter au serveur


    Citation Envoyé par RTK45 Voir le message
    A quoi devrait ressembler la commande pour supprimer une base de données "ma_base" appartement à l'utilisateur "user" depuis un script bash ?
    • Soit tu envoies l'ordre sql via un echo pipé => echo 'drop database if exists "ma_base"' |psql -U user...
    • Soit tu utilises le programme Unix dropdb => dropdb -U user ma_base...


    Citation Envoyé par RTK45 Voir le message
    EDIT :

    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DB=mabase
    DBHOST=localhost
    DBUSER=user
     
    dropdb -e "$DB" -h "$DBHOST" -U "$DBUSER";
    yep
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Démarrer tomcat en tant qu'utilisateur simple dans un script shell
    Par CinePhil dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 22/05/2015, 17h02
  2. changer une option dans un makefile avec un script bash
    Par dedey63 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 26/07/2012, 13h56
  3. Problème avec un script bash
    Par abdelghani666 dans le forum Administration système
    Réponses: 4
    Dernier message: 30/04/2012, 19h40
  4. Impossible de se connecter en tant qu'utilisateur
    Par pseudo88 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 16/07/2010, 22h24
  5. Réponses: 4
    Dernier message: 19/09/2007, 14h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo