Tenía curiosidad por saber por qué todas las bases de datos en PostgreSQL tienen un esquema public
al que tienen acceso todos los usuarios. Sé que puedo revocar privilegios y otorgarlos a un usuario, pero ¿por qué no es el predeterminado?¿Por qué todas las bases de datos tienen un esquema público en PostgreSQL?
Respuesta
No hay mucha justificación dada, pero véase la sección [5.7.6][1] en el manual, pero creo que las siguientes respuestas a su pregunta:
Si no se crea ningún esquemas a continuación, todos los usuarios acceder al esquema público de manera implícita . Esto simula la situación donde los esquemas no están disponibles en absoluto. Esta configuración se recomienda principalmente cuando solo hay un usuario o unos pocos usuarios que cooperan en una base de datos. Esta configuración también permite una transición suave desde el mundo no consciente de esquemas.
Supongo que sería la especificación SQL. Pero, esto es bastante lógico, ¿qué haría create user
de lo contrario, requiere que diga explícitamente qué esquema el usuario también tuvo acceso?
Si sus usuarios no tienen acceso a ningún recurso compartido, ¿por qué no crear un nuevo DB para ellos? A diferencia de MySQL, una nueva base de datos es una nueva base de datos, y no un alias para un nuevo esquema.
Solo quería aclarar esto, significa que cada base de datos tiene su propio esquema public.
.
- 1. ¿Por qué PostgreSQL \ dt muestra solo tablas de esquema público?
- 2. ¿Por qué el nuevo usuario en PostgreSQL se puede conectar a todas las bases de datos?
- 3. MongoDB soltar todas las bases de datos
- 4. ¿Dónde están todas las bases de datos nativas revisadas?
- 5. En mysql, las bases de datos show; el comando no enumera todas mis bases de datos
- 6. Un usuario por base de datos contra usuario único para todas las bases de datos
- 7. Listar todas las tablas en postgresql information_schema
- 8. ¿Cómo borrar todas las bases de datos en Postgres?
- 9. Mysql - encuentre una tabla en todas las bases de datos
- 10. Transferir datos entre bases de datos con PostgreSQL
- 11. Volcados de bases de datos en línea para el público
- 12. Postgresql la creación de bases de datos
- 13. ¿Cómo crear un usuario con privilegios de solo lectura para todas las bases de datos en Postgresql?
- 14. Cómo mostrar todas las tablas de múltiples bases de datos
- 15. Soltar todas las bases de datos del servidor
- 16. en postgresql, ¿son las particiones o las bases de datos múltiples más eficientes?
- 17. MongoDB: ¿Obtener la lista de todas las bases de datos?
- 18. Sincronizar el esquema de dos bases de datos en MySQL
- 19. Cómo exportar todas las bases de datos con phpmyadmin
- 20. ¿Por qué un desarrollador de bases de datos usaría LINQ
- 21. Entender las claves en bases de datos
- 22. ¿Por qué Postgresql dice "el esquema no existe"
- 23. ¿Por qué faltan todas las tablas en la comparación de datos en visual studio 2010?
- 24. ¿Por qué las listas de Scala no tienen un pedido?
- 25. ¿Cómo mostrar todas las consultas de bases de datos hechas por Wordpress?
- 26. Obtenga recuentos de todas las tablas en un esquema
- 27. Cómo usar PostgreSQL Foreign Data Wrapper para unir 2 bases de datos postgresql diferentes
- 28. PostgreSQL: ¿Cómo indexar todas las claves externas?
- 29. ¿Por qué las instancias std :: function tienen un constructor predeterminado?
- 30. PostgreSQL: tabla Nombre/esquema de confusión
No creo que sea debido a la especificación de SQL: "no hay ningún concepto de esquema público en el estándar SQL". [Manual de Postgres] (http://www.postgresql.org/docs/8.1/static/ddl-schemas.html) –
@CarlG Pero le permite usar la base de datos sin conocimiento de un esquema, que es cómo funcionan otros motores (porque no tienen esquemas en absoluto). –
@ElliotCameron Oracle tiene esquemas, utiliza esquemas como sinónimo de usuarios; los usuarios obtienen su propio esquema, los esquemas también se pueden compartir. Microsoft SQL Server tiene esquemas (al igual que Sybase), con el valor predeterminado llamado 'dbo' equivalente a' public' en PostgreSQL donde, si no especificas el esquema, el valor predeterminado es 'dbo'. DB2 de IBM también tiene esquemas. MySQL tiene el sinónimo 'schema', intercambiable con' database' por lo que no es realmente un esquema en el sentido de los otros mencionados. – Davos