Aller au contenu

Adminer et PostgreSQL


Messages recommandés

Avec les changements apportés par DSM 6, je n'arrive plus à connecter adminer à la base pgsql du NAS.

Je me doute bien qu'il faille modifier le fichier /etc/postgresql/pg_hba.conf pour ajouter des accès autres que local, mais les modifications apportées à ce dernier sont effacées à chaque redémarrage du service pgsql.

Et j'ai la flemme de creuser (pour une fois). :biggrin:

Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...

Comme tout le monde s'en fout, j'ai finalement réussi à parvenir à un résultat presque correct : 

login as: admin

admin@DiskStation’s password: ************

admin@DiskStation:~$ sudo -i

Password: ************

root@DiskStation:~# su - postgres

postgres@DiskStation:~$ psql

psql (9.3.6)

Type “help” for help.

 

postgres=# \du

                                     List of roles

        Role name          |                   Attributes                   | Member of

----------------------------+------------------------------------------------+-----------

postgres                   | Superuser, Create role, Create DB, Replication | {}

 

postgres=# CREATE USER admin PASSWORD '************' SUPERUSER CREATEDB CREATEROLE;

CREATE ROLE

postgres=# \du

                                     List of roles

        Role name          |                   Attributes                   | Member of

----------------------------+------------------------------------------------+-----------

admin                      | Superuser, Create role, Create DB              | {}

postgres                   | Superuser, Create role, Create DB, Replication | {}

 

postgres=# \q

postgres@DS411:~$ exit

logout

root@DS411:~# vi /etc/postgresql/pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD

local   all             postgres                                peer map=pg_root

local   all             all                                     peer

host    all             admin           127.0.0.1/32            trust

root@DS411:~# synoservicectl -restart pgsql

pgsql restarted.

root@DS411:~# synoservicectl -status pgsql

pgsql start/running

root@DS411:~# exit

logout

admin@DS411:~$ exit

 

L'un des défauts possibles est que la modification de pg_hba.conf ne soit pas permanente. Sinon ça fonctionne très bien :biggrin:

Lien vers le commentaire
Partager sur d’autres sites

En php, il suffit de ne rien saisir

Citation

It's not explicitly stated here, but you can also connect to PostgreSQL via a UNIX domain socket by leaving the host empty.  This should have less overhead than using TCP e.g.:

$dbh = new PDO('pgsql:user=exampleuser dbname=exampledb password=examplepass');

Je ne sais si ton interface le permet

Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, PiwiLAbruti a dit :

Ce n'est même pas la documentation officielle de PHP qui indique ce support, mais un commentaire d'un utilisateur... :rolleyes:

Citation

Parameters

connection_string

The connection_string can be empty to use all default parameters

Il se trouve que le paramètre par défaut de pgsql (et de mysql) c'est l'utilisation d'un socket unix

Lien vers le commentaire
Partager sur d’autres sites

Avant DSM 6, il suffisait de saisir admin comme login et on accédait directement  à la base PgSQL. Depuis DSM 6, impossible de se connecter avec l'utilisateur postgres (admin n'existe plus).

Après avoir retiré le host des chaînes de connexion de de la fonction pg_connect() , j'obtiens le message PostgreSQL is not a open service.

Je vais simplement ouvrir un ticket sur GitHub.

Lien vers le commentaire
Partager sur d’autres sites

Ça ne vient pas de Adminer mais de la configuration de PostgreSQL dont j'ai pris le temps de lire la documentation concernant le fichier pg_hba.conf.

Par défaut ce fichier contient :

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             postgres                                peer map=pg_root

local   all             all                                     peer

Ça signifie que l'authentification repose sur celle des comptes utilisateur du NAS. Par contre, il faut leur avoir préalablement attribué les droits nécessaires :

postgres=# GRANT CONNECT ON DATABASE my_db TO my_user;
GRANT
postgres=# \connect my_db
You are now connected to database "my_db" as user "postgres".
postgres=# GRANT SELECT ON TABLE my_table TO my_user;
GRANT

J'ai donc ajouté certains droits au compte http (compte par défaut de Web Station) et j'ai simplement vérifié le succès de la connexion avec la chiure de PHP suivante (pas encore réussi avec pg_connect()) :

try{
	$pdo = new PDO('pgsql:dbname=my_db');
}catch (\Exception $e){
	var_dump($e);
}
var_dump($pdo);	// Retourne un objet de type PDO

Bref, ça fonctionne très bien dans l'absolu même si Synology a voulu rendre PostgreSQL peu accessible à ses utilisateurs.

Dernière remarque, un paquet (pour lequel on crée un compte utilisateur dédié sur le NAS) qui aurait besoin de cette base de donnée peut y avoir accès facilement avec les bons droits (bête script à l'installation du paquet).

Modifié par PiwiLAbruti
Lien vers le commentaire
Partager sur d’autres sites

Oui, sans modifier pg_hba.conf. La ligne local all all peer permet à tous les utilisateurs déclarés dans /etc/passwd d'accéder à PostgreSQL.

Tout ce qui est dans /var/services/web est exécuté avec le compte http par défaut, il faut juste prévoir les autorisations les accès avec les commandes GRANT précédemment décrites.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.