PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 27/01/2017 21:40:07

abuche
Membre

[php7] - pg_connect()

bonjour,

Je ne comprend pas avec pg_connect() comment des droits sont refusés :

$conn = pg_pconnect("host=localhost port=5432 dbname=yadlajoie user=martin password=martin");
$result = pg_query ($conn, "SELECT * FROM quizz_11");
if (!$result) {
  echo "Erreur durant la requête.\n";
  exit;

-------------------------------------------------------

Warning: pg_query(): Query failed: ERREUR: droit refusé pour la relation quizz_11 in /media/.......

Erreur durant la requête.

@+

Hors ligne

#2 27/01/2017 22:01:31

rjuju
Administrateur

Re : [php7] - pg_connect()

Qu'est-ce que vous ne comprenez pas ? Vous donné le droit de SELECT sur la table quizz_11 à l'utilisateur martin et le problème persiste ?

Hors ligne

#3 28/01/2017 00:12:09

abuche
Membre

Re : [php7] - pg_connect()

oui, avec pdo martin se connecte
mais avec pg_pconnect et pg_query , martin n'a pas les droits
---------------------------------------------------------------------------
pg_query n'est pas compatible php7.0
comment en avoir la certitude ?
http://php.net/manual/fr/function.pg-query.php

Hors ligne

#4 28/01/2017 01:08:32

abuche
Membre

Re : [php7] - pg_connect()

Postgres est ce une bdd qui est faites que pour des traitements SQL ?
J'ai l'impression que avec PHP cela n'est pas adapté
@+

Dernière modification par abuche (28/01/2017 01:08:57)

Hors ligne

#5 28/01/2017 09:03:49

gleu
Administrateur

Re : [php7] - pg_connect()

Quel est le propriétaire de la table quizz_11 ? quels sont les droits de l'utilisateur martin associés à cette table ? utilisez psql pour ça avec les commandes \d et \z


Guillaume.

Hors ligne

#6 28/01/2017 11:47:55

abuche
Membre

Re : [php7] - pg_connect()

yadlajoie=# \du
martin    | Create DB                                                  | {}
postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
-----------------------------------------------------------------------------------------------
La bdd yadlajoie a été créé par postgres
Ensuite : createuser -d -P martin
-------------------------------------------------------------------
yadlajoie=# \z
                              Access privileges
Schema |   Name   | Type  | Access privileges | Column privileges | Policies
--------+----------+-------+-------------------+-------------------+----------
public | quizz_11 | table |                   |                   |
public | quizz_12 | table |                   |                   |
public | quizz_13 | table |                   |                   |
(3 rows)

Dernière modification par abuche (28/01/2017 11:51:08)

Hors ligne

#7 28/01/2017 21:46:23

abuche
Membre

Re : [php7] - pg_connect()

J'ai réussi avec l'utilisateur 'postgres' qui a tous les droits
Mais pour sortir les colonnes de postgres avec PHP c'est plus long
J'étais parti avec un format booléen, et là il n'y avait que les 1 qui étaient visibles
Avec un format character c'est beaucoup mieux
---------------------------------------------------------------------------
[Resolu]
Pour martin j'aimerai savoir ce qu'il faudrait pour que la connection soit possible

@+

Dernière modification par abuche (28/01/2017 21:47:04)

Hors ligne

#8 28/01/2017 23:50:14

rjuju
Administrateur

Re : [php7] - pg_connect()

Vous confondez droit de se connecter et droit de lire le contenu d'une table.  Si vous créez un nouvel utilisateur, il ne pourra pas lire le contenu d'une table tant que vous ne l'aurez pas autorisé. Regardez du côté de GRANT (http://docs.postgresql.fr/9.6/sql-grant.html).

Cela marche avec l'utilisateur postgres car il est super-utilisateur, et donc à le droit de lire, écrire, supprimer... n'importe quel objet.

Hors ligne

#9 29/01/2017 16:40:00

abuche
Membre

Re : [php7] - pg_connect()

smile
J'ai créé un base yadla pour martin
Martin a des droits sur les tables ( insert, select ... )
-------------------------------------------------
Il y a connection de martin, mais les data ne sont tjrs pas visibles

@+
Comment aller plus loin ?
Voir les droits dans la console ..

Dernière modification par abuche (29/01/2017 20:06:44)

Hors ligne

#10 29/01/2017 20:58:27

rjuju
Administrateur

Re : [php7] - pg_connect()

yadlajoie=# \z
                              Access privileges
Schema |   Name   | Type  | Access privileges | Column privileges | Policies
--------+----------+-------+-------------------+-------------------+----------
public | quizz_11 | table |                   |                   |
public | quizz_12 | table |                   |                   |
public | quizz_13 | table |                   |                   |
(3 rows)

Non, aucun droit n'a été positionné, ou alors vous l'avez fait depuis.  Que renvoie \z sur la base en question ?

Vous pouvez vérifiez que martin à le droit de lecture sur la table quizz_11 avec la requête suivante :

select has_table_privilege('martin','quizz_11', 'select');

Hors ligne

#11 29/01/2017 21:26:46

abuche
Membre

Re : [php7] - pg_connect()

yadla=# select has_table_privilege('martin','quizz_11', 'select');
has_table_privilege
---------------------
t
(1 row)

yadla=#
---------------------------------------------------------------
ok, j'ai compris le principe
postgres crée la base avec le nom du proprio
Ensuite il faut se connecter dans la base pour voir ou vérifier les droits
--------------------------------------------------------------
postgres=#  depuis une autre base il n'y a pas un oeil de superviseur pour voir les autres bases

smile

Hors ligne

#12 30/01/2017 22:31:44

gleu
Administrateur

Re : [php7] - pg_connect()

Non, en effet. Avec PostgreSQL, une base de données est un conteneur hermétique. Vous ne voyez que les objets qui sont dans cette base, pas les objets des autres bases.


Guillaume.

Hors ligne

#13 31/01/2017 00:43:49

abuche
Membre

Re : [php7] - pg_connect()

Un dernier point
Qu'est ce qui rend persistant le système Postgres au démarrage du pc ?
Quand je teste des script PHP , un restart est nécessaire :
sudo /etc/init.d/postgresql restart

Hors ligne

#14 31/01/2017 10:07:08

rjuju
Administrateur

Re : [php7] - pg_connect()

Normalement, un redémarrage n'est nécessaire que si vous modifiez certains paramètre (port, adresse ip, certains paramètres mémoire ...).

Ou est-ce parce qu'il n'est pas automatiquement lancé au démarrage de votre pc ? Si c'est ça quelle distribution utilisez-vous ?

Hors ligne

#15 31/01/2017 11:51:34

ruizsebastien
Membre

Re : [php7] - pg_connect()

Bonjour,

selon votre OS, vous devez regarder du côté de chkconfig ou systemctl.


Cordialement,

Sébastien.

Hors ligne

#16 31/01/2017 13:00:11

abuche
Membre

Re : [php7] - pg_connect()

Ubuntu récent 16.04

Hors ligne

#17 01/02/2017 19:05:45

abuche
Membre

Re : [php7] - pg_connect()

systemctl list-unit-files | grep service | sort accounts-daemon.service
----------------------------------------------------------
postgresql@.service                        disabled
postgresql.service                         enabled

---------------------------------------------------------
Mais j'ai une connection refusée :
Connection refusée ...
---------------
Fatal error: Uncaught PDOException: SQLSTATE[08006] [7] could not connect to server:
Connection refused Is the server running on host "localhost" (::1)
and accepting TCP/IP connections on port 5432? could not connect to server:
----------------

sudo /etc/init.d/postgresql restart
[ ok ] Restarting postgresql (via systemctl): postgresql.service.

Connection ok ...
---------------

Bizare cette activation manuelle de Postgres

smile

systemd-analyze blame
5.794s postgresql@9.5-main.service
5.652s postgresql@9.6-main.service
5.568s postgresql@9.4-main.service
Comment savoir celui que je relance avec ? : sudo /etc/init.d/postgresql restart
-------------------------------------------------------------------------------------------------
journalctl

févr. 01 18:03:43 airubuntu-MS-7721 sudo[3686]: air-ubuntu : TTY=pts/1 ; PWD=/home/air-ubuntu ; USER=root ; COMMAND=/etc/init.d/postgresql restart
févr. 01 18:03:43 airubuntu-MS-7721 sudo[3686]: pam_unix(sudo:session): session opened for user root by (uid=0)
févr. 01 18:03:43 airubuntu-MS-7721 systemd[1]: Stopped PostgreSQL RDBMS.
févr. 01 18:03:43 airubuntu-MS-7721 systemd[1]: Stopping PostgreSQL RDBMS...
févr. 01 18:03:43 airubuntu-MS-7721 systemd[1]: Starting PostgreSQL Cluster 9.4-main...
févr. 01 18:03:43 airubuntu-MS-7721 systemd[1]: Starting PostgreSQL Cluster 9.5-main...
févr. 01 18:03:43 airubuntu-MS-7721 systemd[1]: Starting PostgreSQL Cluster 9.6-main...
févr. 01 18:03:48 airubuntu-MS-7721 systemd[1]: Started PostgreSQL Cluster 9.4-main.
févr. 01 18:03:48 airubuntu-MS-7721 systemd[1]: Started PostgreSQL Cluster 9.6-main.
févr. 01 18:03:49 airubuntu-MS-7721 systemd[1]: Started PostgreSQL Cluster 9.5-main.
févr. 01 18:03:49 airubuntu-MS-7721 systemd[1]: Starting PostgreSQL RDBMS...
févr. 01 18:03:49 airubuntu-MS-7721 systemd[1]: Started PostgreSQL RDBMS.

@+

Dernière modification par abuche (01/02/2017 19:25:50)

Hors ligne

Pied de page des forums