1. Bases de datos relacionales

1.4. Empezar a trabajar con MySQL

En la máquina virtual que os proporcionamos hay instalado un SGBD MySQL. Al iniciar la máquina virtual también se inicia el servidor MySQL.

El sistema cliente-servidor permite acceder a un único servidor desde varios clientes. Por defecto, el cliente del sistema es un terminal o línea de comandos, pero se puede acceder también al servidor desde un cliente con interfaz gráfica de usuario (GUI).

En la máquina virtual está instalada la GUI MySQL Workbench, pero es posible acceder al servidor MySQL desde muchos clientes con diferentes GUI.

Para empezar a trabajar con MySQL utilizaremos el terminal de Linux ejecutando el comando mysql.

Una vez establecida la conexión al servidor, el programa cliente permanece siempre a la espera de la introducción de un nuevo comando SQL por parte del usuario.

Es importante ser cuidadoso con la sintaxis de los comandos, finalizando cada instrucción con el símbolo «;».

Para ilustrar el funcionamiento del juego de instrucciones de SQL mostrado en la tabla 1 sobre el modelo relacional anterior (ver figura 4), implementaremos una base de datos que denominaremos catalogo.

Tabla 1. Manual de referencia de comandos de MySQL

 Comando  Descripción
CREATE USER  Dar de alta a un nuevo usuario
DROP USER  Dar de baja a un usuario existente
ALTER USER  Modificar la cuenta de un usuario
GRANT  Autorizar a un usuario sobre una base de datos
REVOKE  Revocar las autorizaciones de un usuario
SHOW GRANTS  Mostrar las autorizaciones de un usuario
CREATE DATABASE  Crear una nueva base de datos
DROP DATABASE  Eliminar una base de datos existente
USE DATABASE  Acceder a una base de datos existente
SHOW DATABASES  Mostrar la lista de las bases de datos
CREATE TABLE  Crear una nueva tabla
DROP TABLE  Eliminar una tabla existente
SHOW TABLES  Mostrar la lista de las tablas
DESCRIBE  Mostrar los atributos de una tabla
LOAD DATA  Poblar una tabla con un fichero de registros
INSERT  Poblar una tabla con un registro
UPDATE  Actualizar un registro de la tabla
DELETE  Borrar un registro de la tabla
SELECT  Realizar una consulta sobre una o más tablas
Help  Mostrar ayuda sobre un comando del sistema
Pager  Mostrar listados página a página con otro programa
Source  Ejecutar un script de comandos de SQL
Status  Mostrar información sobre el estado del sistema
System  Ejecutar un comando del terminal
Warnings  Mostrar avisos del sistema
Quit  Salir del gestor MySQL
Exit  Salir del gestor MySQL
Mysql  Comando del terminal para invocar al gestor MySQL
Mysqldump  Comando del terminal para el backup de una base de datos

Fuente: elaboración propia.

El SGBD MySQL permite gestionar múltiples bases de datos, implementando un sistema de seguridad basado en autorizaciones. Una vez instalado el servidor en nuestro entorno Linux, se crea inicialmente un usuario con el rol de administrador (en inglés, root) con todos los permisos. Por regla general, solo el usuario con dicho perfil posee los permisos suficientes para gestionar el conjunto de usuarios y bases de datos en su totalidad. De este modo, el administrador garantizará el acceso a una determinada base de datos exclusivamente a un grupo de usuarios establecido previamente. Pese a que puede optarse por trabajar directamente como administrador, siempre es recomendable que configuremos una nueva cuenta a nuestro nombre como usuario convencional para autorizarle posteriormente a trabajar con una base de datos en concreto.

En definitiva, el protocolo que debemos seguir para llevar a cabo nuestro trabajo con el gestor de bases de datos consiste en dos fases:

  1. Invocamos al intérprete de SQL como administrador, realizamos las siguientes tareas y abandonamos el programa:
    1. Creamos un nuevo usuario a nuestro nombre.
    2. Creamos una nueva base de datos.
    3. Autorizamos al nuevo usuario a trabajar con esa base de datos.
  2. Accedemos al intérprete de SQL con nuestro propio usuario y procedemos a interactuar con la nueva base de datos:
    1. Especificamos que vamos a trabajar con dicha base de datos.
    2. Creamos nuevas tablas (vacías) dentro de la base de datos.
    3. Insertamos nuevos registros en dichas tablas. También podemos modificarlos y eliminarlos.
    4. Realizamos consultas sobre los registros de las tablas para obtener la información deseada.

Para empezar a trabajar primero debemos ejecutar el programa mysql desde nuestro terminal de Linux empleando el usuario root:

Figura 6. Iniciar el gestor MySQL como administrador.
Fuente: elaboración propia.

El comando CREATE USER permite al usuario root dar de alta a un nuevo usuario en nuestro sistema. Es recomendable asignar una contraseña a cada nuevo usuario de nuestro sistema:

Figura 7. Sintaxis del comando CREATE USER.
Fuente: elaboración propia.

Ahora, actuando como administradores, crearemos un nuevo usuario llamado eblanco. Para indicar que este usuario trabajará localmente desde nuestra máquina, que actúa de servidor, emplearemos el término localhost.

En algunos ejemplos, para que sean más compresibles, vamos a estructurar las instrucciones de SQL en varias líneas. Nótese que tras introducir cada línea del comando presionando la tecla «Enter», el intérprete de MySQL insertará los símbolos -> para denotar que aún no hemos terminado de introducir el comando completo. MySQL no procederá a ejecutar el comando hasta reconocer el carácter «;».

Figura 8. Crear un nuevo usuario con el administrador.
Fuente: elaboración propia.

Existen varios comandos para gestionar el conjunto de bases de datos del sistema (consultad tabla 1). En este momento debemos proceder a crear la base de datos donde trabajará el nuevo usuario con el comando CREATE DATABASE:

Figura 9. Sintaxis del comando CREATE DATABASE.
Fuente: elaboración propia.

A continuación, creamos la base de datos catalogo y posteriormente empleamos el comando SHOW DATABASES para obtener el listado de bases de datos existentes. Podemos comprobar que la nueva base de datos ha sido creada correctamente:

Figura 10. Creación de la base de datos catalogo.
Al finalizar la ejecución de un comando, el intérprete muestra por pantalla el número de elementos de los resultados (en inglés, rows).
Fuente: elaboración propia.

El administrador concede permisos sobre las operaciones que un determinado grupo de usuarios puede realizar sobre la base de datos. El comando GRANT permite autorizar el acceso de un usuario a una base de datos en particular:

Figura 11. Sintaxis del comando GRANT.
Fuente: elaboración propia.

Para cerrar el trabajo del administrador, debemos garantizar el acceso a la nueva base de datos catalogo a nuestro usuario eblanco empleando el comando GRANT. Con la cláusula ALL, el administrador concede el conjunto completo de permisos a este usuario, aunque exclusivamente sobre esta base de datos. Si queremos eliminar privilegios a un usuario debemos utilizar el comando REVOKE.

Finalmente, para abandonar la ejecución del programa mysql como administradores, podemos emplear los comandos quit o exit.

Figura 12. Autorizar el acceso a un nuevo usuario.
Fuente: elaboración propia.

A partir de este instante, a la hora de ejecutar el programa mysql vamos a trabajar sobre nuestra base de datos con el nuevo usuario eblanco. En primer lugar, debemos acceder al gestor de MySQL empleando el nombre de usuario y la contraseña que hemos creado.

Figura 13. Iniciar el gestor MySQL como un usuario convencional.
Fuente: elaboración propia.

Como es la primera vez que accedemos con este usuario, vamos a obtener información sobre el listado de las bases de datos accesibles utilizando el comando SHOW DATABASES.

Como mostramos a continuación, en la figura 14, nuestro nuevo usuario puede trabajar con dos bases de datos: catalogo y una segunda base de datos (information_schema) que contiene información interna sobre la configuración del sistema.

Con el comando SHOW GRANTS podemos ver también las autorizaciones que el administrador ha concedido a este usuario.

Figura 14. Conocer las bases de datos disponibles.
Fuente: elaboración propia.

Cualquier usuario, una vez dentro del sistema, debe especificar el nombre de la base de datos que va a usar antes de empezar a realizar operaciones sobre ella. Para indicar el nombre de la base de datos que vamos a seleccionar, usaremos el comando USE:

Figura 15. Sintaxis del comando USE.
Fuente: elaboración propia.

Como deseamos trabajar con la base de datos catalogo, procedemos a declarar este hecho en el intérprete de MySQL. Una vez esta instrucción ha sido ejecutada con éxito, ya estamos en disposición de crear las tablas que sirven como soporte de las entidades y las relaciones diseñadas con anterioridad para poblarlas posteriormente con nuevos registros.

Figura 16. Seleccionar la base de datos para trabajar.
Fuente: elaboración propia.