1. Bases de dades relacionals

1.4. Començar a treballar amb MySQL

A la màquina virtual que us proporcionem hi ha instal·lat un SGBD MySQL. En iniciar la màquina virtual també s’inicia el servidor MySQL.

El sistema client-servidor permet accedir a un únic servidor des de diversos clients. Per defecte, el client del sistema és un terminal o línia d’ordres, però es pot accedir també al servidor des d’un client amb interfície gràfica d’usuari (GUI).

A la màquina virtual hi ha instal·lada la GUI MySQL Workbench, però és possible accedir al servidor MySQL des de molts clients amb diferents GUI.

Per començar a treballar amb MySQL utilitzarem el terminal de Linux executant l’ordre mysql.

Una vegada establerta la connexió al servidor, el programa client roman sempre a l’espera de la introducció d’una nova ordre SQL per part de l’usuari.

És important ser curós amb la sintaxi de les ordres, i finalitzar cada instrucció amb el símbol «;».

Per il·lustrar el funcionament del joc d’instruccions de SQL mostrat a la taula 1 sobre el model relacional anterior (vegeu figura 4), implementarem una base de dades que denominarem cataleg.

Taula 1. Manual de referència d’ordres de MySQL.

 Ordre  Descripció
CREATE USER Donar d’alta un nou usuari
DROP USER Donar de baixa un usuari existent
ALTER USER Modificar el compte d’un usuari
GRANT Autoritzar un usuari sobre una base de dades
REVOKE Revocar les autoritzacions d’un usuari
SHOW GRANTS Mostrar les autoritzacions d’un usuari
CREATE DATABASE Crear una nova base de dades
DROP DATABASE Eliminar una base de dades existent
USE DATABASE Accedir a una base de dades existent
SHOW DATABASES Mostrar la llista de les bases de dades
CREATE TABLE Crear una nova taula
DROP TABLE Eliminar una taula existent
SHOW TABLES Mostrar la llista de les taules
DESCRIBE Mostrar els atributs d’una taula
LOAD DATA Poblar una taula amb un fitxer de registres
INSERT Poblar una taula amb un registre
UPDATE Actualitzar un registre de la taula
DELETE Esborrar un registre de la taula
SELECT Realitzar una consulta sobre una o més taules
Help Mostrar ajuda sobre una ordre del sistema
Pager Mostrar llistats pàgina a pàgina amb un altre programa
Source Executar un script d’ordres de SQL
Status Mostrar informació sobre l’estat del sistema
System Executar una ordre del terminal
Warnings Mostrar avisos del sistema
Quit Sortir del gestor MySQL
Exit Sortir del gestor MySQL
Mysql Ordre del terminal per invocar el gestor MySQL
Mysqldump Ordre del terminal per al backup d’una base de dades

Font: elaboració pròpia.

El SGBD MySQL permet gestionar múltiples bases de dades, implementant un sistema de seguretat basat en autoritzacions. Un cop instal·lat el servidor al nostre entorn Linux, es crea inicialment un usuari amb el rol d’administrador (en anglès, root) amb tots els permisos. Per regla general, només l’usuari amb aquest perfil posseeix els permisos suficients per gestionar el conjunt d’usuaris i bases de dades en la seva totalitat. D’aquesta manera, l’administrador garantirà l’accés a una determinada base de dades exclusivament a un grup d’usuaris establert prèviament. Malgrat que es pot optar per treballar directament com a administrador, sempre és recomanable que configurem un nou compte al nostre nom com a usuari convencional per autoritzar-lo posteriorment a treballar amb una base de dades en concret.

En definitiva, el protocol que hem de seguir per dur a terme la nostra feina amb el gestor de bases de dades consisteix en dues fases:

  1. Invoquem l’intèrpret de SQL com a administrador, realitzem les següents tasques i abandonem el programa:
    1. Creem un nou usuari al nostre nom.
    2. Creem una nova base de dades.
    3. Autoritzem el nou usuari a treballar amb aquesta base de dades.
  2. Accedim a l’intèrpret de SQL amb el nostre propi usuari i procedim a interactuar amb la nova base de dades:
    1. Especifiquem que anem a treballar amb aquesta base de dades.
    2. Creem noves taules (buides) dins de la base de dades.
    3. Inserim nous registres en aquestes taules. També podem modificar-los i eliminar-los.
    4. Realitzem consultes sobre els registres de les taules per obtenir la informació desitjada.

Per començar a treballar primer hem d’executar el programa mysql des del nostre terminal de Linux emprant l’usuari root:

Figura 6. Iniciar el gestor MySQL com a administrador.
Font: elaboració pròpia.

L’ordre CREATE USER permet a l’usuari root donar d’alta un nou usuari en el nostre sistema. És recomanable assignar una contrasenya a cada nou usuari del nostre sistema:

Figura 7. Sintaxi de l’ordre CREATE USER.
Font: elaboració pròpia.

Ara, actuant com a administradors, crearem un nou usuari anomenat eblanco. Per indicar que aquest usuari treballarà localment des de la nostra màquina, que actua de servidor, emprarem el terme local.

En alguns exemples, perquè siguin més comprensibles, estructurarem les instruccions de SQL en diverses línies. Després d’introduir cada línia de l’ordre pressionant la tecla «Enter», l’intèrpret de MySQL inserirà els símbols -> per denotar que encara no hem acabat d’introduir l’ordre completa. MySQL no procedirà a executar l’ordre fins a reconèixer el caràcter «;».

Figura 8. Crear un nou usuari amb l’administrador.
Font: elaboració pròpia.

Existeixen diverses ordres per gestionar el conjunt de bases de dades del sistema (consulteu taula 1). En aquest moment hem de procedir a crear la base de dades on treballarà el nou usuari amb l’ordre CREATE DATABASE:

Figura 9. Sintaxi de l’ordre CREATE DATABASE.
Font: elaboració pròpia.

A continuació, creem la base de dades cataleg i posteriorment emprem l’ordre SHOW DATABASES per obtenir el llistat de bases de dades existents. Podem comprovar que la nova base de dades ha estat creada correctament:

Figura 10. Creació de la base de dades cataleg.
En finalitzar l’execució d’una ordre, l’intèrpret mostra per pantalla el nombre d’elements dels resultats (en anglès, rows).
Font: elaboració pròpia.

L’administrador concedeix permisos sobre les operacions que un determinat grup d’usuaris pot realitzar sobre la base de dades. L’ordre GRANT permet autoritzar l’accés d’un usuari a una base de dades en particular:

Figura 11. Sintaxi de l’ordre GRANT.
Font: elaboració pròpia.

Per tancar la feina de l’administrador, hem de garantir l’accés a la nova base de dades cataleg al nostre usuari eblanco emprant l’ordre GRANT. Amb la clàusula ALL, l’administrador concedeix el conjunt complet de permisos a aquest usuari, encara que exclusivament sobre aquesta base de dades. Si volem eliminar privilegis a un usuari hem d’utilitzar l’ordre REVOKE.

Finalment, per abandonar l’execució del programa mysql com a administradors, podem emprar les ordres quit o exit.

Figura 12. Autoritzar l’accés a un nou usuari.
Font: elaboració pròpia.

A partir d’aquest instant, a l’hora d’executar el programa mysql treballarem sobre la nostra base de dades amb el nou usuari eblanco. En primer lloc, hem d’accedir al gestor de MySQL emprant el nom d’usuari i la contrasenya que hem creat.

Figura 13. Iniciar el gestor MySQL com un usuari convencional.
Font: elaboració pròpia.

Com que és la primera vegada que hi accedim amb aquest usuari, obtindrem informació sobre el llistat de les bases de dades accessibles utilitzant l’ordre SHOW DATABASES.

Com mostrem a continuació, en la figura 14, el nostre nou usuari pot treballar amb dues bases de dades: cataleg i una segona base de dades (information_schema) que conté informació interna sobre la configuració del sistema.

Amb l’ordre SHOW GRANTS podem veure també les autoritzacions que l’administrador ha concedit a aquest usuari.

Figura 14. Conèixer les bases de dades disponibles.
Font: elaboració pròpia.

Qualsevol usuari, una vegada dins del sistema, ha d’especificar el nom de la base de dades que ha d’utilitzar abans de començar a realitzar operacions sobre ella. Per indicar el nom de la base de dades que seleccionarem, farem servir l’ordre USE:

Figura 15. Sintaxi de l’ordre USE.
Font: elaboració pròpia.

Com que desitgem treballar amb la base de dades cataleg, procedim a declarar aquest fet en l’intèrpret de MySQL. Un cop aquesta instrucció ha estat executada amb èxit, ja estem en disposició de crear les taules que serveixen com a suport de les entitats i les relacions dissenyades amb anterioritat per poblar-les posteriorment amb nous registres.

Figura 16. Seleccionar la base de dades per treballar.
Font: elaboració pròpia.