Esta página describe Calíope 1.5, la versión que estamos construyendo ahora mismo. La 1.4 está terminada y en revisión de App Store, y la tienda sirve hoy la 1.3 en el Mac y la 1.2 en iPad. El changelog dice en qué versión llegó cada función.
Añade un botón «Abrir en Calíope» a cada tema. Sólo funciona con la app instalada.
Crea, edita y elimina cuentas del servidor con sus privilegios.
Dónde está: Espacio de Trabajo › Herramientas › Usuarios
Abre Usuarios desde la barra de navegación del workspace. El panel de la izquierda lista todas las cuentas del servidor, con las del sistema agrupadas aparte; el buscador filtra por nombre. Selecciona una cuenta para cargar sus privilegios.
Lo que aparece a la derecha depende del motor, porque el modelo de seguridad no es el mismo. En MySQL y MariaDB una cuenta es usuario@host y los privilegios se conceden en cuatro ámbitos: Global, Base de datos, Tabla y Rutina. En PostgreSQL una cuenta es un rol, no hay host, y en lugar del ámbito global aparecen sus atributos, que no se conceden sino que se ponen. Lo que un motor no tiene no se dibuja apagado: no se dibuja.
Dentro de cada tarjeta las casillas van agrupadas por Datos, Estructura, Rutinas, Administración y Replicación. Marca lo que corresponda y pulsa Guardar cambios; mientras haya cambios sin aplicar la cabecera lo indica, y Descartar cambios vuelve a lo que hay en el servidor.
Palabras clave: usuarios, roles, privilegios, permisos, GRANT, user admin
Pulsa el botón Nuevo usuario en la barra de Administración de Usuarios. Introduce el nombre y la contraseña. La cuenta se crea sin privilegios; asígnalos después.
El campo host y el selector de método de autenticación sólo aparecen donde el motor los tiene. En PostgreSQL no hay ninguno de los dos: desde dónde se admite una conexión lo decide el archivo pg_hba.conf del servidor, y el método de cifrado de la contraseña lo decide la configuración del servidor, no la cuenta.
Palabras clave: crear usuario, nuevo usuario, CREATE USER, contraseña
Selecciona la cuenta en el panel de la izquierda y pulsa Eliminar en la cabecera. Un diálogo de confirmación muestra qué se va a eliminar. La acción es irreversible.
Las cuentas que instala el servidor aparecen en su propio grupo y no se pueden eliminar desde aquí.
En PostgreSQL el servidor puede negarse, y no es un fallo de Calíope: un rol que posee objetos o que tiene privilegios concedidos no se puede borrar hasta que se le quiten. Calíope no emite DROP OWNED BY por su cuenta, porque eso borraría datos que nadie ha pedido borrar. Quita antes sus concesiones —incluidas las de «todas las tablas», que dejan además un privilegio por omisión— o traspasa lo que posee.
Palabras clave: eliminar usuario, DROP USER, borrar, revocar
Selecciona la cuenta en el panel de la izquierda y pulsa Editar en la cabecera. Se abre el formulario de edición.
El formulario enseña sólo lo que el motor tiene. En MySQL y MariaDB lleva la contraseña, el método de autenticación, el bloqueo de la cuenta y los límites de recursos por hora. En PostgreSQL lleva la contraseña y nada más: no hay bloqueo —una cuenta se cierra quitándole el atributo LOGIN, que se ve en su tarjeta— ni límites por hora, y el número de conexiones simultáneas y la caducidad se editan junto a los atributos.
Deja el campo de contraseña vacío si sólo quieres cambiar el resto de ajustes.
Palabras clave: cambiar contraseña, password, editar usuario, ALTER USER, credenciales, nueva contraseña
Gestionar privilegios por base de datos, tabla y rutina
Asigna permisos granulares a nivel de BD, tabla o rutina específica.
Dónde está: Usuarios › Árbol de privilegios
Cada ámbito de privilegios es una tarjeta con su contador de concedidos y su interruptor WITH GRANT OPTION:
- Atributos del rol — sólo PostgreSQL. No son privilegios: son propiedades del rol (LOGIN, SUPERUSER, CREATEDB…) y se escriben con ALTER ROLE. Al pie van las conexiones simultáneas y la caducidad.
- Global — sólo la familia MySQL. Aplican a todo el servidor (p. ej. SUPER, PROCESS, REPLICATION SLAVE).
- Conexión — sólo PostgreSQL. Los privilegios de la base del clúster a la que apunta el perfil: CONNECT, CREATE y TEMPORARY. Es la que decide si la cuenta puede siquiera conectarse.
- Base de datos — sobre todos los objetos de una base (en PostgreSQL, de un esquema).
- Tabla — sobre una tabla concreta.
- Rutina — sobre un procedimiento o función almacenados.
Dentro de cada tarjeta las casillas van agrupadas por categoría, con Marcar todo por grupo, y ALL PRIVILEGES está destacado arriba porque concede el ámbito entero de una vez.
Para añadir un ámbito que no aparece, usa Agregar objeto en la barra inferior. Guardar cambios ejecuta los REVOKE y GRANT necesarios; si el servidor rechaza alguno, aparece un aviso junto al botón con el detalle.
Palabras clave: privilegios, GRANT, REVOKE, base de datos, tabla, rutina, permisos granulares, columnas, EXECUTE, SUPER
Por qué esta pantalla no se parece a la de MySQL, y qué significa cada parte.
Dónde está: Espacio de Trabajo › Herramientas › Usuarios
En PostgreSQL no hay usuarios y grupos por separado: hay roles, y un rol es las dos cosas a la vez. Un rol con el atributo LOGIN sirve para entrar; uno sin él sirve para agrupar privilegios y dárselos a otros. Por eso la pantalla cambia de forma, y no por capricho.
No hay host. Una cuenta es un nombre a secas. Desde dónde se admite una conexión lo decide pg_hba.conf, que es del servidor y no de la cuenta, así que Calíope no lo enseña aquí ni lo puede cambiar.
Los atributos no son privilegios.SUPERUSER, CREATEDB, CREATEROLE, REPLICATION, BYPASSRLS, INHERIT y LOGIN se ponen con ALTER ROLE, no se conceden con GRANT. Al guardar, Calíope escribe todos: lo que dejes sin marcar queda apagado. Es lo que hace que la pantalla diga la verdad — si sólo se escribiera lo marcado, desmarcar una casilla no la apagaría y volvería sola la próxima vez que abrieras la cuenta.
La pertenencia es transitiva. Si app pertenece a lectores y lectores a auditores, entonces app tiene lo de auditores sin que nadie se lo haya concedido. La tarjeta Pertenece a distingue las pertenencias directas de las heredadas y enseña el camino de cada una. Las heredadas no se pueden quitar desde aquí, y por eso no llevan botón: lo que habría que revocar es el eslabón, y ése es de otro rol.
PUBLIC no es un rol: es todo el mundo. Aparece en la lista como una cuenta más porque, si no, un objeto concedido a todos se vería como privado. Por omisión PUBLIC puede conectarse a la base y ejecutar cualquier función.
El propietario tiene todo sobre lo suyo, y eso no aparece como concesión. Una tabla recién creada no tiene ninguna fila de privilegios en el catálogo, y aun así su dueño puede hacer con ella lo que quiera. Por eso la cabecera lleva la ficha «propietario de N objetos» y esas tarjetas se dibujan marcadas y en gris: no hay nada que conceder ni que revocar.
«Conceder a todas las tablas» son dos sentencias. En MySQL, ON base.* cubre también las tablas que se creen mañana; aquí hacen falta dos órdenes que no significan lo mismo: una alcanza a las tablas que existen ahora y otra a las futuras. La segunda, además, sólo cubre las que cree la cuenta con la que Calíope está conectada. Ninguna de las dos vuelve luego como una casilla de la tarjeta del esquema, porque no son privilegios del esquema. El botón de al lado las deshace las dos, y hace falta: mientras quede el privilegio por omisión, el servidor no deja borrar la cuenta.
Lo que no está. No hay bloqueo de cuenta —se quita LOGIN—, no hay límites por hora —sólo el número de conexiones simultáneas—, no hay selector de método de autenticación —lo decide el servidor— y no hay FLUSH PRIVILEGES: aquí el catálogo es la fuente, y un GRANT ya está en vigor cuando el servidor contesta.