¿Cómo separar los datos de PostgreSQL para diferentes usuarios de Mac?

Al instalar PostgreSQL en MacOS, necesita crear una carpeta de datos donde almacenará detalles sobre usuarios, bases de datos y privilegios, pero estos datos están disponibles globalmente. ¿Hay alguna forma de separar esto según los usuarios de Mac?

De esta manera:

  • Al iniciar sesión con UserA, PostgreSQL solo instanciará / verá DB_A1 y DB_A2 y los usuarios de PostgreSQL definidos solo para la instancia de PostgreSQL de UserA.
  • Al iniciar sesión con UserB, PostgreSQL solo instanciará / verá DB_B1 y DB_B2 y los usuarios de PostgreSQL definidos solo para la instancia de PostgreSQL de UserB.

preguntado el 16 de mayo de 11 a las 20:05

Todos los usuarios de mac pueden sudo, ¿verdad? Si puede sudo, en última instancia, tendrá control total sobre todo en la unidad. -

Gracias por su respuesta, entiendo lo que está diciendo, pero estoy más interesado en tener diferentes bases de datos (o bases de datos de datos) para diferentes usuarios de sistemas operativos y que se carguen al iniciar sesión. -

Es posible que pueda administrar algo así con pg_hba.conf. Cree la asignación de usuarios de Postgres a los usuarios de Mac OS y asigne a los usuarios la propiedad de las bases de datos adecuadas. No será seguro, pero puede ser conveniente. quizás postgresql.org/docs/8.2/static/auth-methods.html#AUTH-IDENT -

Frank, solo los usuarios autorizados por / etc / sudoers pueden sudo, como en cualquier otro Unix. Si la cuenta se crea a través de la GUI como una cuenta estándar, no podrá sudo. -

1 Respuestas

de acuerdo con mi conocimiento algo oxidado sobre PostgreSQL, su intención llevaría a iniciar un proceso de postmaster para cada usuario en su propio puerto reservado. Aunque esto es posible, huele a humo del infierno de la administración (sin contar la sobrecarga de un pesado proceso RDBMS reservado para un solo usuario que pasa la mayor parte del tiempo esperando). Expresado positivamente, propongo considerar una de las siguientes opciones:

  • Agregar una línea a pg_hba.conf como local all sameuser all md5 para permitir que todos los usuarios locales accedan únicamente a su base de datos personal (denominada como el usuario). El acceso a los datos del sistema puede estar aún más restringido dependiendo de la versión real de PostgreSQL que esté utilizando (es mejor consultar el documentación en este caso).

  • Dependiendo de la cantidad de datos, si el acceso concurrente no era un requisito fundamental (que parece ser el caso aquí), cambie a sqlite3; es eficiente, los datos se encuentran en un solo archivo, el acceso lo proporciona una biblioteca en lugar de una armada de proceso en segundo plano RDBMS completo, y viene listo para usar con todos los Mac OS X.

contestado el 17 de mayo de 11 a las 00:05

sqlite está fuera de discusión para las necesidades actuales. Si entiendo correctamente lo que está diciendo, significa crear un usuario de postgres para UserA y otro para UserB. De hecho, estoy buscando configurar 2 entornos diferentes, uno que se instancia cuando UserA inicia sesión, y el otro para UserB, cada uno con sus propios pgusers y dbs, por lo que estaba buscando una solución para definir el datadb (initial db ) separados para cada usuario del sistema operativo. - Constantin Scurtea

Después de hojear la documentación real, todavía parece que no es posible otorgar un rol (los usuarios y grupos han sido reemplazados por el concepto de rol desde la versión 8 más o menos) el privilegio de crear nuevos roles a menos que este usuario tenga derechos de superusuario y por lo tanto le para acceder a todas las bases de datos de la instalación. Esto deja a mi primer acercamiento desde arriba como el único camino a seguir. Probablemente valga la pena iniciar los procesos de postgres de un usuario hasta que inicie sesión. Esto se puede hacer con parámetros de configuración adicionales como en postmaster -c data_directory=<user specific data path goes here>. ¿Eso ayuda? - ofi

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.