[pgsql-ayuda] Como acceder Postgres con PHP

Bolo Lacertus lacertus@servidor.unam.mx
Wed, 20 Dec 2000 15:04:02 -0600


Saludos!

A la mejor no estamos muy claros en algo que es muy importante así que
dejenme repetirlo por si las pulgas: Postgres usa una serie de usuarios
que solo él conoce y usa, en lo que Apache controla el acceso a los
recursos por los usuarios de UNIX (Apache corre con los permisos de un
usuario y si ese usuario no tiene autorización de hacer algo, Apache
tampoco), de modo que independientemente de que el usuario con el que
corra Apache sea el adecuado, tienes que ver los usuarios creados en
Postgres con los que iniciarás tus conecciónes de PHP a la base de datos
y que son INDEPENDIENTES del usuario con que Apache corra.

"Alejandro Rivadeneira B." wrote:
> Seniors, tengo Red Hat 7, Apache 1.3, Postgres 7, Php 4.
> 1) Se que debo crear un usuario especial en Postgres para acceder
>     via Apache.... pero cual de los siguientes ? (o ambos ?):
>     a) nobody
>     b) apache       (para Red Hat 7 ??)

Recomiendo b) apache, y esto se hace mas evidente en los otros puntos,
básicamente es útil defierenciar lo que puede hacer alguien mediante web
y lo que puede hacer en "consola".

> 2) Estos usuarios deben, o no deben hacer lo que sigue ??
>     a) Crear bases de datos.
>     b) Crear nuevos usuarios y/o dar accesos a usuarios.

Salvo sistemas extraordinarios, estas tareas suelen estar a cargo de un
subsistema con una seguridad mucho mas estricta que el servicio
convencional e incluso que no se presta por Web a toda la cobertura de
usuarios (en el caso de crear bases de datos, no creo que deba
permitirse en general para nadie por Web).
De modo que para el sistema de servicio general (y su usuario) es un
formal no. Puedes hacer otro usuario, que se someta a criterios mas
ceveros de autentificación por ejemplo para crear usuarios (aunque a
menudo los usuarios de la base de datos no son los usuarios que atiende
el sistema, por lo que no suele ser necesario).

> 3) La base de datos que quiero acceder debe ser creada con el
>     usuario nobody o apache ?

No debes crearla con ninguno de ellos, para tener una base de datos se
recomienda tener al menos tres y en tu caso cuatro usuarios que son:
DBA - El administrador de Postgres, todo lo puede
DBO - El dueño de la base de datos, puede hacer lo que quiera con ella
Desarrollo - El usuario con que desarrollas, similar a DBO pero no puede
modificar la estructura de la BD, aunque puede hacer lo que quiera con
la información y tiene acceso directo a ella.
Web - El usuario con el que se conectara apache (tu pensabas ponerle
"apache") en este restringes todo lo que puedas para evitar que un
desliz de seguridad de tu sistema web pueda tener efectos desastrosos en
tu sistema.

La base de datos es creada con DBA, pero la estructura (tablas, indices,
etc.) es creada por DBO, luego, la información al pone el de Desarrollo
(y te quedas trabajando con el) y dejas a Web solo para que sea el usado
por el "público" mediante tu servicio internet.

> 4) El codigo PHP para acceder la base de datos de Postgres ..
>     donde debe estar ?
>     dentro del directorio del usuario nobody o apache, o en otro
>     directorio ?

Bueno, para que sea funcional debe ser visible como documento HTML por
Apache, se recomienda que lo pongas bajo tu htdocs pero en realidad no
hay mayores restricciones al respecto, solo asegurate de que sean los
usuarios del sistema correctos los que tengan permisos para verlo. Aquí
alluda mucho tener un grupo "web" en UNIX de modo que puedes hacer que
algunos usuarios pertenezcan al mismo grupo al que pertenezca el usuario
bajo el que correo Apache y con permisos de grupo controles quien puede
hacer que cosa.

> 5) Tienen ustedes algun trozo de codigo Php donde se vea como
>     abren una tabla de B.datos Postgres ? .... para poder entender
>     como se accede.

Ahi si te quedo mal, soy perlero de corazón, pero me imagino que algunos
otros si lo tienen, no olvides que por lo regular en al cadena de
conección es necesario poner el login y el password del usuario postgres
que estará usando tu script PHP.

Daniel Sol
--------- Pie de mensaje -------------------------------------------
Archivo historico: http://tlali.iztacala.unam.mx/maillist/pgsql-ayuda
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text   : unsubscribe pgsql-ayuda