Esta página cubre el Servidor de base de datos PostgreSQL y explica cómo usar Webmin para administrar tablas, usuarios, grupos y datos.
Contenido
Introducción a PostgreSQL
Al igual que el servidor de base de datos MySQL, PostgreSQL es un servidor de base de datos gratuito que admite múltiples bases de datos y tablas, y permite a los clientes consultarlas con SQL. Es más útil para los programadores que escriben aplicaciones que necesitan usar una base de datos para almacenar información. Los lenguajes populares como Perl, C, Java y PHP tienen API para acceder a una base de datos PostgreSQL.
Un servidor PostgreSQL puede albergar varias bases de datos y cada base de datos puede contener varias tablas. Una tabla a su vez contiene campos, cada uno de los cuales tiene un tipo y tamaño. Las tablas contienen registros, cada uno de los cuales suele contener información sobre algún objeto, como una persona, un producto o una compra. Los campos se pueden considerar como las columnas de una tabla y los registros reales de datos como las filas. Algunos campos también pueden contener varios valores, como una matriz.
SQL (que significa lenguaje de consulta estructurado) es un lenguaje para extraer datos o actualizar datos en una base de datos. Casi todas las bases de datos usan SQL, y su sintaxis es generalmente la misma en todos los diferentes paquetes de bases de datos, como Oracle, PostgreSQL y MySQL. Sin embargo, su sintaxis no se trata en este capítulo.
Los paquetes para PostgreSQL vienen con muchas distribuciones de Linux y se pueden compilar e instalar en casi todas las variedades de Unix. Su funcionamiento es el mismo en todos los sistemas operativos, por lo que también lo es el módulo de Webmin para gestionarlo.
PostgreSQL consta de un proceso de servidor que lee y escribe los archivos de la base de datos real y un conjunto de programas de cliente que se comunican con el servidor. El más utilizado es el comando psql, que permite al usuario ejecutar consultas SQL y ver los resultados. Ninguno de los clientes accede directamente a los archivos de la base de datos, eso se deja completamente en manos del servidor.
Todos los archivos de la base de datos de PostgreSQL se almacenan en un directorio como /var/lib/pgsql o /usr/local/pgsql. Además, hay varios archivos de configuración de texto que afectan la operación del servidor y los clientes. El más importante es pg_hba.conf, que enumera los hosts de los clientes que pueden conectarse al servidor. Este es el único archivo que Webmin edita directamente:todas las demás configuraciones de la base de datos se realizan conectándose al servidor de la base de datos, ya sea directamente o mediante el comando psql.
El módulo del servidor de base de datos PostgreSQL
Este módulo permite a una administración administrar bases de datos, tablas, campos y registros en un servidor PostgreSQL. En muchos sentidos, es muy similar al módulo Servidor de base de datos MySQL. Cuando hace clic en su icono en la categoría Servidores de Webmin, la página principal muestra una lista de las bases de datos existentes en su sistema, como se muestra en esta captura de pantalla:
La página principal del módulo PostgreSQL
Si Webmin detecta que PostgreSQL no está instalado, no se ha inicializado o no se puede conectar, la página principal no aparecerá como se muestra en la imagen de arriba. En su lugar, se mostrará algún tipo de mensaje de error. Los más comunes se tratan en los siguientes párrafos.
Si aparece el mensaje PostgreSQL no se está ejecutando en su sistema, deberá iniciar el servidor de la base de datos antes de poder usar este módulo para administrarlo. Simplemente haga clic en Iniciar servidor PostgreSQL botón en la parte inferior de la página. Si desea que se inicie en el momento del inicio a partir de ahora, use el módulo de Inicio y apagado (cubierto en Inicio y apagado) para crear una nueva acción para iniciarlo. En la mayoría de las distribuciones de Linux, los paquetes de PostgreSQL incluyen un script de acción de arranque llamado postgres o postgresql que no está habilitado de forma predeterminada.
Si Webmin está ejecutando PostgreSQL, no conoce el nombre de usuario y la contraseña de administración necesarios para conectarse, y se mostrará el formulario *Inicio de sesión de PostgreSQL* en la página principal. Debe ingresar detalles de inicio de sesión válidos para su servidor de base de datos, generalmente para el usuario de Postgres que tiene acceso completo a todas las bases de datos y funciones. Iniciar sesión como otro usuario con menos privilegios puede funcionar al principio, pero no podrá utilizar todas las funciones del módulo. A veces, PostgreSQL está configurado para autenticar a los usuarios por su nombre de usuario de Unix, en lugar de por un nombre de usuario y una contraseña separados (el modo de autenticación de identidad). Si este es el caso en su sistema, deberá marcar ¿Conectar como el mismo usuario de Unix? casilla en el formulario.
Si aparece un mensaje de error como el archivo de configuración del host de PostgreSQL hba.conf no se encontró, entonces la configuración del módulo es incorrecta o su servidor aún no se ha inicializado por primera vez. Muchas versiones empaquetadas para sistemas Linux deben inicializarse antes de que puedan usarse, generalmente ejecutando el comando initdb. Si el módulo sabe cómo hacer esto en su sistema, un Inicializar base de datos Se mostrará un botón en el que puede hacer clic para configurar el servidor por primera vez.
El mensaje de error The PostgreSQL client program *psql not was not found on your system* indica que PostgreSQL no está instalado en absoluto, o que está en un directorio diferente al que espera Webmin. En los sistemas Linux y FreeBSD, el módulo asume que ha instalado los paquetes para la base de datos incluidos con su distribución, mientras que en otros sistemas operativos asume que se realizó una instalación estándar desde el código fuente en /usr/local/pgsql. Si lo instaló y aún aparece ese mensaje de error, deberá leer la sección *Configuración del módulo del servidor de base de datos de PostgreSQL* para obtener detalles sobre cómo ajustar las rutas que utiliza el módulo.
Si está ejecutando Linux y PostgreSQL no está instalado, use el módulo Paquetes de software para instalar todos los paquetes que comienzan con postgres desde el sitio web o el CD de distribución. A menudo habrá varios, como postgresql, postgresql-server y postgresql-devel. Para otros sistemas operativos, visite http://www.postgresql.org/ para descargar la distribución del código fuente, luego compílelo e instálelo.
El módulo PostgreSQL usa comandos SQL para realizar acciones como crear tablas, agregar campos y editar registros. Para ejecutar estos comandos, Webmin debe conectarse al servidor de la base de datos, lo que se puede hacer de dos maneras. Puede ejecutar el comando psql con los parámetros correctos y analizar su salida, o usar la biblioteca Perl DBI para conectarse directamente.
El primer método siempre está disponible porque el comando psql siempre está instalado cuando el servidor de la base de datos lo está. Sin embargo, no es totalmente confiable ya que ciertos tipos de datos de tablas producen resultados que no siempre se pueden analizar. Por este motivo, debe instalar los módulos DBI y DBD::Pg Perl. Si falta alguno, se mostrará un mensaje en la parte inferior de la página principal que le pedirá que instale uno o ambos haciendo clic en un enlace. Esto lo llevará a una página en el módulo Módulos de Perl donde se descargan e instalan DBI y/o DBD::Pg.
Crear una nueva base de datos
Cuando se instala PostgreSQL por primera vez, generalmente se crea una base de datos llamada template1. Debido a que se usa como plantilla para cualquier base de datos nueva, debe crear la suya propia para que contenga tablas en las que su aplicación almacene datos. Los pasos para hacerlo son:
- En la página principal del módulo, haga clic en el enlace *Crear una nueva base de datos* arriba o debajo de la tabla de iconos de bases de datos existentes.
- Ingrese un nombre único para él en el Nombre de la base de datos campo. Este debe constar únicamente de letras, números y el carácter _.
- Cuando la ruta del archivo de la base de datos el campo está configurado como Predeterminado , los archivos que realmente contienen los datos de la base de datos se crearán en el directorio predeterminado. En los sistemas Linux, normalmente será algo así como /var/lib/pgsql/data; en otros sistemas operativos, probablemente será /usr/local/pgsql/var. Para usar un directorio diferente, como usuario de Unix, la base de datos se ejecuta como (generalmente postgres), primero créelo con el comando mkdir y luego ejecute initlocation con el nombre del directorio como parámetro. A continuación, seleccione el botón de opción de sección para la Ruta del archivo de la base de datos e ingrese el directorio en el cuadro de texto adyacente. Desafortunadamente, a menos que PostgreSQL se haya compilado para admitir rutas de directorio de datos absolutos, se producirá un error cuando haga clic en Crear botón. De forma predeterminada, esta característica no está habilitada.
- Haga clic en Crear botón. Se agregará la base de datos y volverá a la página principal del módulo, que debe incluir su nuevo ícono. Si existe una base de datos llamada template1 en su servidor, cualquier tabla u otros objetos que contenga se copiarán en la base de datos recién creada. Esto puede ser útil si desea agregar muchas bases de datos con estructuras similares.
Crear una nueva tabla
Se puede agregar una tabla a una base de datos existente en cualquier momento. Cada tabla tiene uno o más campos, cada uno de los cuales tiene un tipo, tamaño y otros atributos. Para añadir una tabla, los pasos a seguir son :
- En la página principal, haga clic en el icono de la base de datos a la que desea agregar la tabla. Esto le llevará a la página de edición de la base de datos que se muestra en la siguiente pantalla, en la que hay un icono para cada tabla existente.
- Ingrese la cantidad de campos que desea que tenga su nueva tabla en Campos cuadro de texto junto a Crear una nueva tabla y luego haga clic en el botón. Esto abre un formulario para ingresar los detalles de la nueva tabla y sus campos iniciales.
- Elija un nombre para la tabla e ingréselo en el Nombre de la tabla campo. El nombre debe ser único dentro de la base de datos y debe usar solo letras, números y el carácter _.
- Cada fila de los Campos iniciales tabla define un campo que se agregará a la nueva tabla. El tipo de campo que se agrega depende de lo que ingrese para la fila debajo de cada una de las siguientes columnas :
- Nombre de campo El nombre de este campo, que debe ser único dentro de la tabla y debe estar compuesto únicamente por letras, números y _. Si se deja en blanco, no se agregará ningún campo para esta fila.
- Tipo de datos La selección que realice en este menú determina el tipo de datos que se pueden almacenar en este campo. Los tipos más comunes son varchar para cadenas de texto de longitud variable, int4 para números enteros y float4 para números fraccionarios. Ver los Tipos de campo sección a continuación para obtener más detalles.
- Ancho de letra Este campo se puede dejar en blanco, en cuyo caso se utilizará el tamaño predeterminado para el tipo elegido. De lo contrario, debe ingresar un número que es el número de caracteres (para campos char o varchar) o dígitos (para campos numéricos) que el campo puede almacenar. Algunos tipos, como blob y date, no necesitan ni permiten que se especifique ningún tipo.
- Opciones de campo Si matriz? está marcada, este campo será una matriz capaz de almacenar más de un valor. Si ¿Permitir valores nulos? está marcado, la base de datos permitirá que se inserten valores SQL NULL en este campo. Si ¿Clave principal? está marcada, este campo será parte de la clave principal de la tabla. Todas las tablas deben tener una clave, que suele ser el primer campo y de tipo int o varchar. ¿Cuándo Único? está marcada, PostgreSQL evitará que más de un registro tenga el mismo valor para este campo. Los campos de clave principal también son automáticamente únicos.
- Cuando termine de ingresar los campos, presione Crear botón en la parte inferior de la página. La tabla se agregará a la base de datos y volverá a la página que enumera las tablas existentes.
La página de edición de la base de datos
Agregar y editar campos
Se pueden agregar nuevos campos a las tablas y se pueden cambiar los nombres de los campos existentes. Sin embargo, no hay forma de cambiar el tipo de tamaño de un campo, a menos que lo elimine y lo vuelva a agregar. Cuando se crea un campo, inicialmente siempre contendrá valores NULL en las filas existentes de la tabla.
Para agregar un campo, los pasos a seguir son :
- En la página principal del módulo, haga clic en el icono de la base de datos que contiene la tabla. Luego haga clic en el ícono de la tabla en sí; esto lo llevará a una página que enumera los nombres, tipos y tamaños de los campos existentes, como se muestra en la captura de pantalla a continuación.
- Seleccione un tipo para el nuevo campo en el menú junto al botón *Agregar campo de tipo*. Al hacer clic, su navegador muestra el formulario de creación de campo para ingresar el resto de los detalles.
- Elija un nombre para este campo que solo contenga letras, números y el carácter _ e ingréselo en el Nombre de campo caja de texto. Dos campos en la misma tabla no pueden tener el mismo nombre.
- Para un campo char o varchar, ingrese la cantidad máxima de caracteres que puede contener en el Ancho del tipo caja de texto. Para un campo numérico, debe ingresar dos números separados por una coma, como 10,2 . El primero es el número máximo de dígitos que puede almacenar un número en este campo, y el segundo es el número de dígitos a la derecha del punto decimal. Para otros tipos de campo, el Ancho del tipo cuadro de texto no aparece en absoluto.
- Si desea que este campo pueda almacenar varios valores del mismo tipo, seleccione Sí para el campo de matriz? opción.
- Haga clic en Crear para agregar el campo a la tabla, siempre que no haya errores en su entrada.
La página de edición de tablas
Una vez que se ha creado un campo, solo puede cambiar su nombre, a diferencia de MySQL, donde se puede modificar su tipo o tamaño. Sin embargo, esto significa que no hay riesgo para los datos que contiene. Para cambiar el nombre de un campo en una tabla, los pasos a seguir son :
- En la página principal del módulo, haga clic en el ícono de la base de datos que contiene la tabla y luego en el ícono de la tabla. Esto lo llevará a la lista de campos en la tabla, cuyo ejemplo se muestra en la captura de pantalla anterior.
- Haga clic en el nombre del campo que desea cambiar.
- En el formulario de edición, actualice el Nombre de campo cuadro de texto con un nuevo nombre. Naturalmente, esto debe seguir las mismas reglas de nomenclatura que se aplican al crear un campo.
- Haga clic en Guardar para que se realice el cambio en la base de datos.
Eliminar un campo
A diferencia de MySQL, el servidor de base de datos PostgreSQL no tiene un comando SQL incorporado para eliminar un campo de una tabla. Sin embargo, es posible llevar a cabo la eliminación de un campo creando una nueva tabla temporal que carezca del campo, eliminando la tabla anterior y renombrando a temporal con el nombre original. Esto funciona, y Webmin puede hacerlo todo automáticamente; sin embargo, cierta información, como índices y valores de campo predeterminados, se perderá en el proceso. Sin embargo, los datos reales en la tabla (aparte de los del campo eliminado) estarán seguros.
Si su tabla no contiene índices o campos con valores predeterminados, puede continuar y eliminar un campo siguiendo estos pasos :
- Haga clic en el ícono de la base de datos que contiene la tabla en la página principal del módulo y luego en el ícono de la tabla.
- Haga clic en Soltar campo en el formulario de edición de tablas, debajo de la lista de campos existentes. Esto lo lleva a una página que enumera todos los campos en la tabla, cada uno de los cuales tiene un botón de opción junto a él debajo de Eliminar este .
- Seleccione el campo del botón de radio que desea eliminar de la tabla.
- Marque la casilla Seleccionar para confirmar casilla de verificación en la parte inferior del formulario.
- Presiona el Campo Soltar botón para eliminar el campo elegido. Una vez que se haya eliminado, se volverá a mostrar la misma página para que pueda eliminar otra si lo desea.
Tipos de campo
PostgreSQL tiene una gran cantidad de tipos de campos, todos los cuales son compatibles con Webmin. Sin embargo, no todos son particularmente útiles para la base de datos promedio. La mejor fuente de información es la documentación oficial en http://www.postgresql.org/docs/7.3/static/datatype.html
PostgreSQL tiene varios tipos para almacenar objetos geométricos, como punto, ruta, cuadro y círculo, y tipos para información de red, como inet, cidr y macaddr. Los campos de todos estos tipos pueden crearse y editarse usando este módulo, aunque no estén documentados anteriormente. Sin embargo, ninguna otra base de datos (como Oracle o MySQL) admite estos tipos, por lo que puede ser conveniente evitarlos si desea que sus programas sean independientes de la base de datos.
Ver y editar el contenido de la tabla
El módulo PostgreSQL le permite ver y editar el contenido de cualquier tabla en cualquier base de datos, incluso aquellas que no tienen claves primarias. A diferencia del módulo MySQL, puede identificar filas específicas para editar utilizando la columna oid especial, que contiene un identificador único para cada registro.
Para ver el contenido de una tabla, siga estos pasos :
- En la página principal, haga clic en el ícono de la base de datos que contiene la tabla y luego en el ícono de la tabla misma.
- En el formulario de edición de tablas, haga clic en Ver datos botón en la parte inferior. Esto lo llevará a una página que contiene una tabla de las primeras 20 filas de la tabla.
- Si la tabla contiene más filas de las que se pueden mostrar en una página, el inicio y el final del rango visible y el número total de filas se mostrarán en la parte superior. Junto a él hay flechas izquierda y derecha para pasar a los 20 registros siguientes o anteriores. A diferencia del módulo MySQL, no hay forma de buscar registros o saltar a un número de fila en particular en esta página.
Esta misma página también se puede utilizar para editar, eliminar o agregar registros. Los registros para editar primero deben seleccionarse usando las casillas de verificación a la derecha de cada fila, o Seleccionar todo y *Invertir selección enlaces. Al hacer clic en *Editar filas seleccionadas botón, la página volverá a mostrarse con los valores de todos los registros elegidos en cuadros de texto. Realice los cambios que desee y haga clic en Guardar botón en la parte inferior de la página para actualizar la base de datos. O presiona Cancelar si desea dejar de editar sin guardar sus modificaciones.
Para eliminar registros, selecciónelos usando las mismas casillas de verificación y enlaces de selección, y haga clic en Eliminar filas seleccionadas botón. Los registros elegidos se eliminarán inmediatamente de la base de datos sin confirmación adicional.
Para agregar un nuevo registro, presione Agregar fila botón debajo de la mesa. Aparecerá una fila adicional que contiene cuadros de texto vacíos para que ingrese nuevos detalles. Al hacer clic en Guardar agregará el nuevo registro a la tabla y moverá la pantalla para que pueda ver la nueva fila. Alternativamente, puede hacer clic en Cancelar si cambia de opinión acerca de agregar un registro.
Eliminar tablas y bases de datos
Este módulo también contiene botones para eliminar una tabla de una base de datos, o una base de datos completa y todo lo que contiene. Cuando se elimina una tabla, todos los registros y campos que contiene se perderán
Para eliminar uno, los pasos a seguir son :
- En la página principal del módulo, haga clic en el ícono de la base de datos de la que desea eliminar la tabla y luego en el ícono de la tabla misma.
- Haga clic en Soltar tabla botón debajo de la lista de campos. Esto lo llevará a una página de confirmación que le preguntará si está seguro y le indicará cuántos registros se eliminarán.
- Para continuar, haga clic en Soltar tabla botón de nuevo. Una vez que se haya eliminado, volverá a la lista de tablas supervivientes en la base de datos.
También es posible eliminar una base de datos completa y todas las tablas y registros que contiene. Se puede eliminar cualquier base de datos, pero eliminar la plantilla 1 es una mala idea ya que el módulo se conecta a ella cuando recupera la lista de otras bases de datos y asume que siempre existirá. Como de costumbre, a menos que haya realizado una copia de seguridad, no hay forma de deshacer la eliminación.
Suponiendo que realmente desea eliminar una base de datos, siga estos pasos :
- En la página principal, haga clic en el icono de la base de datos que desea eliminar.
- Presione Soltar base de datos botón debajo de la lista de tablas. Se mostrará una página de confirmación que le indicará cuántas tablas y registros se perderán si continúa.
- Para continuar con la eliminación, haga clic en Soltar base de datos y volverá a la página principal del módulo cuando haya terminado.
Es posible eliminar la base de datos template1 si cambia la base de datos PostgreSQL inicial campo en la configuración del módulo a alguna otra base de datos que no se va a eliminar.
Ejecución de comandos SQL
El módulo PostgreSQL también proporciona una interfaz simple para ejecutar comandos SQL en una base de datos y mostrar su salida. Los pasos para usarlo son :
- En la página principal, haga clic en el icono de la base de datos en la que desea ejecutar los comandos.
- Haga clic en Ejecutar SQL debajo de la lista de iconos de la tabla. Esto lo llevará a una página para ingresar comandos SQL, ejecutar archivos de comandos y cargar datos en la base de datos.
- Ingrese cualquier comando SQL en el cuadro de texto en la parte superior de la página y presione Ejecutar botón. Si hubo un error en su sintaxis SQL o no se puede ejecutar el comando, se mostrará el mensaje de error de PosygreSQL. De lo contrario, se mostrará una tabla de resultados del SQL (si corresponde). Solo las declaraciones SELECT producen resultados; UPDATE, INSERT y otros comandos que modifican registros no lo hacen.
A diferencia del módulo MySQL, no hay historial de comandos ni soporte para ejecutar varias instrucciones SQL desde un archivo.
Copia de seguridad y restauración de una base de datos
Si una de sus bases de datos contiene información importante, se debe hacer una copia de seguridad con regularidad en caso de que una falla del disco o un error de SQL provoque la pérdida de datos. También es una buena idea crear una copia de seguridad antes de realizar alguna operación potencialmente riesgosa, como ejecutar una declaración SQL compleja que modifica muchos registros.
Debido a los cambios en los parámetros de los comandos pg_dump y pg_restore, el módulo solo le permite crear y restaurar copias de seguridad cuando utiliza las versiones 7.2 y posteriores de PostgreSQL. Si está utilizando una versión anterior, los botones que se explican en los pasos a continuación no estarán visibles.
Para usar el módulo para hacer una copia de seguridad, los pasos a seguir son :
- En la página principal, haga clic en el icono de la base de datos que desea respaldar.
- Haga clic en el botón *Copia de seguridad *debajo de la lista de tablas. Esto lo llevará a un formulario para ingresar el destino de la copia de seguridad y las opciones.
- En la ruta del archivo de copia de seguridad campo, ingrese la ruta completa del archivo en el que se debe escribir la copia de seguridad, como /tmp/backup.tar . El archivo no debe existir ya; si existe, se producirá un error cuando pulse Copia de seguridad. botón.
- En el menú Formato de archivo de copia de seguridad, seleccione el tipo de archivo que debe crearse. Las opciones disponibles son :*Texto SQL sin formato *El archivo contendrá una serie de comandos SQL que recrean las tablas en la base de datos y las rellenan con datos. Este formato es conveniente porque los archivos de copia de seguridad se pueden editar manualmente, pero no puede incluir objetos grandes (como blobs) en una copia de seguridad de SQL ni restaurarlos de forma selectiva. *Archivo tar *El archivo de copia de seguridad será un archivo tar estándar de Unix, que contiene varios archivos que especifican las estructuras y el contenido de la tabla. Se admiten objetos grandes y es posible la restauración selectiva. *Archivo personalizado *El archivo estará en el formato de copia de seguridad personalizado de PostgreSQL, que está comprimido y admite objetos grandes, exclusión de datos y reordenación en el momento de la restauración.
- Para hacer la copia de seguridad, presione el botón *Copia de seguridad* en la parte inferior del formulario. Si todo va bien, será redirigido a la lista de la tabla; de lo contrario, se mostrará una página que muestra la ejecución del comando de copia de seguridad y su salida de error.
Si tiene una base de datos que se utiliza para un propósito de producción importante, se debe realizar una copia de seguridad con regularidad, como una vez al día. En lugar de seguir las instrucciones anteriores todos los días, puede usar el módulo Trabajos cron programados (cubierto en el capítulo 10) para crear un trabajo que haga la copia de seguridad por usted. Para averiguar qué comando ejecutar, use las instrucciones anteriores para hacer una copia de seguridad primero y luego visite el módulo Registro de acciones de Webmin (cubierto en el capítulo 54) para ver el comando que usó.
Una vez que se ha creado un archivo de copia de seguridad, se puede restaurar en el mismo sistema o en otro servidor que ejecute MySQL. Los pasos son :
- En la página principal del módulo, haga clic en el icono de la base de datos en la que se debe restaurar la copia de seguridad.
- Presiona Restaurar debajo de la lista de tablas para abrir un formulario para seleccionar el archivo de copia de seguridad.
- En la ruta del archivo de copia de seguridad campo, ingrese la ruta completa al archivo que contiene los datos de copia de seguridad de PostgreSQL, como /tmp/backup.tar . Este archivo puede estar en cualquiera de los formatos disponibles en el formulario de copia de seguridad.
- Normalmente, el proceso de restauración intentará volver a crear las tablas antes de restaurar los datos en ellas. Para evitar esto, cambie ¿Restaurar solo datos, no tablas? campo a Sí . Esto solo funcionará si ya existen todas las tablas en la copia de seguridad. Todos los datos que contiene actualmente se combinarán con los registros restaurados.
- Normalmente, el proceso de restauración fallará si ya existe una tabla en la copia de seguridad en la base de datos. Para eliminar las tablas existentes antes de la restauración, cambie ¿Eliminar tablas antes de restaurar? campo a Sí . No tiene sentido establecer este campo y el anterior en Sí .
- Haga clic en Restaurar botón para volver a cargar datos y tablas desde el archivo de copia de seguridad. Se mostrará un mensaje de error que muestra el resultado del comando pg_restore si algo sale mal; de lo contrario, volverá a la lista de tablas en la base de datos.
Gestión de usuarios de PostgreSQL
Como era de esperar, el servidor de base de datos PostgreSQL no permite simplemente que cualquiera se conecte y comience a manipular datos. En su lugar, verifica a los clientes solicitándoles que envíen un nombre de usuario y una contraseña, que verifica con su propia lista interna de usuarios. Esta lista de usuarios de la base de datos es totalmente independiente de la lista de usuarios de Unix en el archivo /etc/passwd.
De forma predeterminada, solo existirá el usuario postgres, y tendrá acceso completo a todas las bases de datos y tablas. Si está escribiendo una aplicación que usa una base de datos, se debe crear un nuevo usuario para que esa aplicación inicie sesión como. Si varias personas van a acceder a su base de datos mediante el comando psql u otros programas cliente, cada una debe tener su propio nombre de usuario y contraseña.
Para agregar un nuevo usuario, los pasos a seguir son :
- En la página principal del módulo, haga clic en Usuarios de PostgreSQL icono. Esto lo llevará a una lista de usuarios existentes y sus habilidades, como se muestra en la siguiente captura de pantalla.
- Haga clic en el enlace Crear un nuevo usuario encima o debajo de la lista, lo que abrirá el formulario de creación de usuarios.
- Ingrese un nombre único para el usuario, compuesto solo de letras, números y el carácter _, en el Nombre de usuario campo.
- Para establecer una contraseña para este usuario, seleccione el segundo botón de radio en Contraseña e ingrese una contraseña en el cuadro de texto al lado. Si Ninguno es elegido, el usuario no podrá iniciar sesión a menos que el servidor haya sido configurado para permitir conexiones sin una contraseña (como se explica en la sección *Restricción del acceso del cliente*).
- Si desea que este usuario pueda crear sus propias bases de datos, cambie ¿Puede crear bases de datos? campo a No . Solo el usuario de administración maestro (postgres) realmente necesita poder hacer esto.
- Para otorgar a este usuario derechos para editar y crear usuarios de PostgreSQL, cambie ¿Puede crear usuarios? campo a Sí . Nuevamente, esto normalmente debería dejarse como No .
- El Válido hasta El campo controla durante cuánto tiempo se puede utilizar este usuario. Si Para siempre se selecciona, no tendrá fecha de caducidad, pero si se elige la segunda opción y se ingresa una fecha en formato AAAA-MM-DD en el campo de texto, la cuenta no se podrá utilizar después de esa fecha.
- Haga clic en Crear para agregar la nueva cuenta a la lista de usuarios de PostgreSQL. Las personas o los programas podrán iniciar sesión como este usuario inmediatamente. A menudo, el servidor de la base de datos está configurado de forma predeterminada para permitir que cualquier usuario local inicie sesión sin necesidad de proporcionar una contraseña. Para cambiar esto, consulte Restricción del acceso de clientes sección.
- Para configurar exactamente a qué tablas y vistas puede acceder este nuevo usuario, siga las instrucciones en la sección *Editar permisos de objetos*.
Usuarios existentes de PostgreSQL
Una vez que se ha creado un usuario, se puede editar haciendo clic en su nombre en la lista de usuarios que se muestra en la captura de pantalla anterior. Esto lo lleva al formulario de edición que es casi idéntico al formulario de creación de usuarios, excepto que el nombre del usuario no se puede cambiar. Una vez que haya terminado de modificar la contraseña, la fecha de caducidad y otros campos, haga clic en Guardar botón para activar los cambios.
También se puede eliminar un usuario haciendo clic en Eliminar en su página de edición. Tenga cuidado de no eliminar el usuario de postgres, ya que este módulo de Webmin lo usa normalmente para iniciar sesión en PostgreSQL. De hecho, incluso editar este usuario puede causar problemas si establece una fecha de caducidad o le quita la capacidad de crear bases de datos u otros usuarios.
Como muchos otros módulos, este módulo se puede configurar para crear, actualizar o eliminar automáticamente un usuario de PostgreSQL cuando se agrega, modifica o elimina un usuario de Unix, respectivamente. Esto puede ser útil si permite que algunos de los usuarios de Unix en su sistema accedan a las bases de datos y desea mantener sus contraseñas sincronizadas.
Para configurar la sincronización, los pasos a seguir son:
- En la página principal del módulo, haga clic en Usuarios de PostgreSQL y desplácese hacia abajo hasta el formulario debajo de la lista de cuentas existentes.
- Si desea que se cree un nuevo usuario de PostgreSQL para cada nuevo usuario de Unix, marque la casilla *Agregar un nuevo usuario de PostgreSQL cuando se agregue un usuario de Unix*. Sin embargo, los usuarios creados automáticamente no tendrán ningún permiso de objeto específico.
- Si desea que se cambien las contraseñas de los usuarios de PostgreSQL cuando ocurra lo mismo con los usuarios de Unix coincidentes, marque la casilla *Actualizar un usuario de PostgreSQL cuando se modifique el usuario de Unix coincidente*.
- Para eliminar un usuario de PostgreSQL al mismo tiempo que el usuario de Unix del mismo nombre, marque la casilla *Eliminar un usuario de PostgreSQL cuando se elimine el usuario de Unix correspondiente*.
- Presiona Guardar para activar la nueva configuración de sincronización.
Gestionar grupos de PostgreSQL
PostgreSQL mantiene su propia lista interna de grupos, cada uno de los cuales puede contener cero o más usuarios. Los grupos son más útiles cuando se asignan permisos de objetos, ya que le permiten otorgar acceso a una tabla o vista a muchos usuarios a la vez. Aparte de eso, no desempeñan ningún papel en el control de acceso o la autenticación.
Para crear un grupo, los pasos a seguir son :
- En la página principal del módulo, haga clic en Grupos de PostgreSQL icono. Su navegador mostrará una tabla de grupos existentes y sus miembros, si los hay. Cuando PostgreSQL se instala por primera vez, no se definen grupos.
- Haga clic en Crear un nuevo grupo enlace para ir al formulario de creación de grupos.
- Ingrese un nombre que consista en letras, números y el carácter _ en el Nombre del grupo campo. Ningún otro grupo o usuario puede tener el mismo nombre.
- Deje el ID de grupo campo sin cambios, ya que Webmin elige automáticamente el ID.
- Seleccione los usuarios que serán miembros de este grupo de los Miembros lista. En la mayoría de los navegadores, puede presionar Ctrl y hacer clic para seleccionar más de un nombre de usuario, o Mayús y hacer clic para seleccionar un rango completo.
- Haga clic en Crear para agregar el grupo. Object permissions can now be assigned to it, as explained in the Editing object permissions sección.
Just like a user, a group that you have created can be edited by clicking on its name in the list on the PostgreSQL Groups page, changing the name or membership list on the editing form and hitting Save . Or it can be deleted by clicking the Delete button on the same form.
Restricting client access
Usually, the default PostgreSQL configuration allows any user to connect to the database server from the same system without needing to login, but prevents all remote access. If you want to allow clients to connect from other systems (for example if you are setting up a database server that will be accessed from a separate web server), then PostgreSQL needs to be configured to allow this.
To grant access to another host, follow these instructions :
- On the module's main page, click on the Allowed Hosts icon. You will be taken to a page listing hosts from which connections are allowed, the databases clients can access and the authentication modes used. Typically, only local connections and those from 127.0.0.1 will be allowed initially.
- Click on the Create a new allowed host link above or below the list to bring up the host creation form.
- In the Host address field, select Single host and enter the IP or hostname of the remote client system into the adjacent field. Alternately, to allow an entire LAN select Network and enter the network address (like 192.168.1.0 ) and netmask (like 255.255.255.0 ) into the fields next to it.
- To give the specified host or network access to all databases on your server, leave the Database field set to All databases . Otherwise, make a selection from the menu to limit the client to just that one. If you want to grant a client access to two databases, you will need to add two host entries each with a different choice selected from Database menu.
- In the Authentication mode field, select Plaintext password . The option No authentication required will also allow users on the client system to connect, but without needing to provide a valid password. Clearly, this is not very secure.
- Hit the Create button to add the new allow host entry.
If your system has multiple users, each of whom has a data in a PostgreSQL database that belongs to them, you should not allow them to login to the database server without a password. By default, PostgreSQL allows exactly this, which is not particularly secure! Fortunately, it can be easily fixed. However, there is a risk that you will lock Webmin itself out of the database, as it is often set up by default to login as the user postgres without a password.
Follow the instructions below to re-configure the module to login with a password, and to force local users to do the same thing :
- On the module's main page, click on the PostgreSQL Users icon and then on the postgres user to bring up its editing form.
- Select the second radio button for the Password field and enter a nice secure password into the adjacent text field. Then click Save .
- Go back to the module's main page, and hit the Module Config Enlace.
- In the Administration password field, select Set to and enter the password you chose into the text field. Then click Save at the bottom of the form.
- Click on the Allowed Hosts icon, and then on Local connection in the Host address column. Change the *Authentication mode* field to Plaintext password , and click the Save botón. After your browser returns to the list of allowed hosts, click on 127.0.0.1 and make the same change.
- Return to the module's main page. If all went well, you will still be able to see and manage databases, and all users will require a password to connect.
When a client connects to the database server, PostgreSQL checks the host entries on the Allowed Hosts page in order. As soon as it finds one that matches the client address and requested database, the authentication mode for that entry is used. You can use this feature to block certain hosts while allowing all others by creating a host entry with the *Host address *field set to the IP you want to block, and the Authentication mode set to Reject connection . This entry must appear in the list above any broader entry that would allow the same client.
Because new allowed host entries are always added to the end of the list, the page has a feature for moving around. The up and down arrows under the Move column in the list can be clicked on to move an entry up or down one place respectively.
Editing object privileges
Each PostgreSQL object (a table, view, index or sequence) has an owner, which is the user who created it. By default, only the owner can select data from or update records in an object, which is not too useful if your server has multiple users who will all need access to the same tables. Fortunately, it is possible to grant access to database objects to other users or groups, by following the steps below :
- On the module's main page, click on the Granted Privileges icon. Assuming you actually have some tables in your databases, this will bring up a page listing all existing objects and their current permissions.
- Click on the name of the object that you want to grant access to, which will take you to its privileges editing form.
- The Grant privileges to table lists all users and groups to whom access has been granted, followed by a blank row for adding a new one. Most of the time, it will just contain that one empty row though. In the User column, select the name of the user or group to grant privileges to from the menu, or choose Everyone to grant access to all PostgreSQL users. In the Privileges column, check the boxes for the rights that should be granted to the chosen user or group. The available options are their meanings are :*SELECT *When checked, the user will be able to view records in this table or view with an SQL SELECT query. *UPDATE *When chosen, this option gives users the ability to update existing records in the table. *INSERT *This option gives users the right to add new records to the table with an SQL INSERT statement. *DELETE *When checked, the user will be able to delete existing records from the table. *RULE *Allows the user to create of rules on the table or view. A rule is an piece of SQL code that is executed to transform data inserted, updated or deleted in the table. *REFERENCES *Allows the user to create a field that references this table as a foreign key. *TRIGGER *When checked, the user will be able to create triggers for this table. Because the table only displays one empty row at a time, you will need to save and re-edit the object permissions if you want to grant access to more than one user. If several users are to be given the same permissions, it is better to put them in a group and grant access to the group instead. # Hit the Save button at the bottom of the page to make the new permissions active.
Unlike MySQL, there is no way to give a user access to an entire database, or just to a field within a table. All privileges are granted at the table level only.
Module access control
As WebminUsers explains, it is possible to create a Webmin user who has access to only a subset of the features of some modules. In the case of the PostgreSQL Database Server module, you can limit a user to being able to manage tables and fields in specific databases, and prevent him from editing users, groups or granted permissions. This can be useful if various databases on your server are owned by different people, and you want to give each of them a Webmin login to manage only those that belong to them.
Once a user has been given access to the module, to limit him to only certain databases the steps to follow are :
- In the Webmin Users module, click on PostgreSQL Database Server next to the name of a user or group who has access to the module.
- On the access control form, change the Can edit module configuration? campo a No . This is necessary to prevent the user changing the programs that the module uses for accessing the database.
- In the Databases this user can manage field, choose the Selected opción. Then select the databases he should have access to from the list below.
- Change the Can create new databases? campo a No . There is no reason that a restricted user of this type should be able to add new databases.
- Unless you want the user to be able to delete his own databases, change the Can drop databases? campo a No . Leaving it set to Yes is harmless though, as he will only be able to delete those that you have granted him access to.
- Change the Can stop and start PostgreSQL server? campo a No .
- Change the Can edit users, groups, hosts and grants? campo a No , so that he cannot create a new PostgreSQL user with access to all databases.
- Set the Can create backups? campo a No , as giving a user the rights to make a backup may allow him to overwrite files on your system.
- The Can restore backups? field can be safely set to Yes , as there is no danger in allowing a user to re-load data into his databases from a backup file.
- Finally, to make the new access control restrictions active, click Save .
Configuring the PostgreSQL Database Server module
Like most other modules, this one has several options that you can set by clicking on the Module Config link in the top-left corner of its main page. Those fields listed under *Configurable option* relate to its connection to the database and user interface, while those under System configuration define the paths to the PostgresSQL programs and files.
Unless you have installed the database server in a different directory to the default for your operating system, fields in the second section do not generally need to be changed. This can happen if you installed PostgreSQL from the source code instead of using the package supplied with your Linux distribution, or if you have two copies of PostgreSQL installed and are configuring a clone of the module (covered in WebminConfiguration) to manage the second install.