Pt51 - Catàleg i DBA
Contingut
- 1 Guillem Solà i Boeck (host A10BPC22)
- 1.1 Identificar el funcionament d'un diccionari de dades del SGBD
- 1.1.1 Indicar quin és el catàleg de MariaDB
- 1.1.2 Crear un usuari administrador i indicar les taules que es modifiquen
- 1.1.3 Crear un usuari que tingui tots els permisos sobre la base de dades moodle, indicar les taules que es modifiquen
- 1.1.4 Crear un usuari que només pugui fer consultes a la base de dades moodle, indicar les taules que es modifiquen
- 1.2 Identifica les tasques del DBA i les de la resta d'usuaris d'un SGBD
- 1.3 ANNEX
- 1.1 Identificar el funcionament d'un diccionari de dades del SGBD
Guillem Solà i Boeck (host A10BPC22)
Identificar el funcionament d'un diccionari de dades del SGBD
Indicar quin és el catàleg de MariaDB
El catàleg de MariaDB està format per dues bases de dades: mysql i information_schema. Són dues bases de dades importants que es creen en el moment de la instal·lació del SGBD i que, quan fem la posada a punt amb mysql_secure_installation es modifiquen amb els nous paràmetres que haguem triat durant el wizard. Aquest catàleg conté informació arran de les altres bases de dades presents com ara noms de taules que les formen, relacions de claus foranes, camps que formen les claus primàries, etc. Aquest catàleg, com a tal, es troba al directori de dades de MariaDB: /var/lib/mysql
on a dins hi haurà tants subdirectoris com bases de dades gestioni aquell SGBD.
Crear un usuari administrador i indicar les taules que es modifiquen
Abans de crear l'usuari
MariaDB [mysql]> select host, user from user; +-----------+---------------+ | host | user | +-----------+---------------+ | 127.0.0.1 | root | | ::1 | root | | localhost | root | +-----------+---------------+ 3 rows in set (0.00 sec)
Creació de l'usuari
CREATE USER 'administrador'@'localhost' IDENTIFIED BY 'moodle';
Després de crear l'usuari
MariaDB [mysql]> select host, user from user; +-----------+---------------+ | host | user | +-----------+---------------+ | 127.0.0.1 | root | | ::1 | root | | localhost | administrador | | localhost | root | +-----------+---------------+ 4 rows in set (0.00 sec)
Veiem que ha aparegut a la taula mysql.user el nou usuari creat.
Crear un usuari que tingui tots els permisos sobre la base de dades moodle, indicar les taules que es modifiquen
Primer instal·larem el software moodle segons la documentació de l'annex. Llavors, realitzarem aquesta secció amb la base de dades moodle creada per a allotjar un entorn moodle. La comanda per a crear una base de dades nova moodle és:
CREATE DATABASE moodle;
Llavors crearem l'usuari administrador amb una contrasenya i li donarem tots els privilegis a la BBDD moodle:
GRANT ALL PRIVILEGES ON moodle.* TO 'administrador'@'localhost' IDENTIFIED BY 'moodle' WITH GRANT OPTION;
Crear un usuari que només pugui fer consultes a la base de dades moodle, indicar les taules que es modifiquen
Abans de crear l'usuari
MariaDB [mysql]> select host, user from user; +-----------+---------------+ | host | user | +-----------+---------------+ | 127.0.0.1 | root | | ::1 | root | | localhost | administrador | | localhost | root | +-----------+---------------+ 4 rows in set (0.00 sec)
Creació de l'usuari
GRANT SELECT ON moodle.* TO 'moodle_ro'@'localhost' IDENTIFIED BY 'moodlero';
Després de crear l'usuari
MariaDB [mysql]> select host, user from user; +-----------+---------------+ | host | user | +-----------+---------------+ | 127.0.0.1 | root | | ::1 | root | | localhost | administrador | | localhost | moodle_ro | | localhost | root | +-----------+---------------+ 5 rows in set (0.00 sec)
Podem concloure que la taula que es modifica quan creem, esborrem o modifiquem permisos dels usuaris és la de mysql.user ja que si mirem quins camps hi ha obtenim:
MariaDB [mysql]> describe user; +------------------------+-----------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------------+-----------------------------------+------+-----+---------+-------+ | Host | char(60) | NO | PRI | | | | User | char(16) | NO | PRI | | | | Password | char(41) | NO | | | | | Select_priv | enum('N','Y') | NO | | N | | | Insert_priv | enum('N','Y') | NO | | N | | | Update_priv | enum('N','Y') | NO | | N | | | Delete_priv | enum('N','Y') | NO | | N | | | Create_priv | enum('N','Y') | NO | | N | | | Drop_priv | enum('N','Y') | NO | | N | | | Reload_priv | enum('N','Y') | NO | | N | | | Shutdown_priv | enum('N','Y') | NO | | N | | | Process_priv | enum('N','Y') | NO | | N | | | File_priv | enum('N','Y') | NO | | N | | | Grant_priv | enum('N','Y') | NO | | N | | | References_priv | enum('N','Y') | NO | | N | | | Index_priv | enum('N','Y') | NO | | N | | | Alter_priv | enum('N','Y') | NO | | N | | | Show_db_priv | enum('N','Y') | NO | | N | | | Super_priv | enum('N','Y') | NO | | N | | | Create_tmp_table_priv | enum('N','Y') | NO | | N | | | Lock_tables_priv | enum('N','Y') | NO | | N | | | Execute_priv | enum('N','Y') | NO | | N | | | Repl_slave_priv | enum('N','Y') | NO | | N | | | Repl_client_priv | enum('N','Y') | NO | | N | | | Create_view_priv | enum('N','Y') | NO | | N | | | Show_view_priv | enum('N','Y') | NO | | N | | | Create_routine_priv | enum('N','Y') | NO | | N | | | Alter_routine_priv | enum('N','Y') | NO | | N | | | Create_user_priv | enum('N','Y') | NO | | N | | | Event_priv | enum('N','Y') | NO | | N | | | Trigger_priv | enum('N','Y') | NO | | N | | | Create_tablespace_priv | enum('N','Y') | NO | | N | | | ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | | | ssl_cipher | blob | NO | | NULL | | | x509_issuer | blob | NO | | NULL | | | x509_subject | blob | NO | | NULL | | | max_questions | int(11) unsigned | NO | | 0 | | | max_updates | int(11) unsigned | NO | | 0 | | | max_connections | int(11) unsigned | NO | | 0 | | | max_user_connections | int(11) | NO | | 0 | | | plugin | char(64) | NO | | | | | authentication_string | text | NO | | NULL | | +------------------------+-----------------------------------+------+-----+---------+-------+ 42 rows in set (0.02 sec)
On podem llegir-hi select_priv, insert_priv, create_view_priv entre molts altres. Cada privilegi té un camp associat que pot tenir valor Y o N en funció de si aquell usuari té permès aquell permís o no.
Identifica les tasques del DBA i les de la resta d'usuaris d'un SGBD
Com a DataBase Administrators haurem de fer tasques administratives com ara
- engegar i aturar el sistema gestor de la base de dades
- crear, eliminar i modificar bases de dades i les seves taules
- gestionar les còpies de seguretat i poder restaurar-ho en cas necessari
- auditar la base de dades per a buscar forats de seguretat o, sobretot, problemes de rendiment i fer-ne un diagnòstic de la causa. Una vegada detectat, ser capaços de poder proposar solucions per a mitigar el problema o millorar el rendiment del sistema en general.
Crear un script per a fer una d'aquestes tasques (no backup)
ANNEX
Instal·lació del programari moodle
Des de la pàgina oficial podem descarregar l'últim release del programa (a dia d'avui el 3.5) en format .tar.gz. De manera que podem descarregar-lo amb un wget https://download.moodle.org/download.php/stable35/moodle-3.5.tgz
des de la línia de comandes de la màquina virtual que ens farà de servidor.
Procediment
Una vegada descarregat des d'Internet, extreurem l'arxiu tgz a l'arrel del directori /var/www/html
de manera que pugui ser servit a través d'Apache. A la primera arrencada, ens surt un missatge que ens obliga a instal·lar PHP7 per a poder-lo utilitzar. Haurem d'afegir primer el repositori EPEL amb
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
i el repo REMI:
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
També serà necessari instal·lar una utilitat de yum que permet canviar repositoris per defecte, de manera que quan instal·lem PHP, ens agafi el del repositori EPEL amb la versió 7:
yum install yum-utils
Una vegada instal·lades aquestes utilities, seleccionarem el repositori que volem activar segons la sub-versió que volguem instal·lar de PHP: 7.0, 7.1 o 7.2: En aquest cas, instal·lo la versió 7.2
yum-config-manager --enable remi-php72
Una vegada activat el repo amb la versió de PHP seleccionada, instal·larem la versió 7.2 amb la comanda
yum install php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo php-intl
- Nota: l'últim paquet php-intl és un requeriment per a versions de Moodle superiors a 3.4.
Per a comprovar la versió de PHP que està instal·lada i en funcionament actualment podem executar un
php -v
I ens donarà una sortida:
PHP 7.2.5 (cli) (built: Apr 24 2018 19:12:06) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
Això és senyal que s'ha instal·lat i està a punt el PHP 7.2.5. Ara és qüestió de recarregar la configuració del servidor web Apache perquè utilitzi la versió PHP nova.
systemctl reload httpd
Llavors podem tornar a obrir la pàgina web des d'on s'està servint el moodle i tindrem la primera pantalla d'un assistent d'instal·lació.
La segona pantalla ens fa definir la URL des d'on s'accedirà al moodle i 2 directoris més on el servidor web necessita accés de lectura/escriptura. La solució més pràctica és canviar el propietari de /var/www
del root a l'apache:
chown -R apache:apache /var/www
Llavors podrem passar a la tercera pantalla: Triarem el motor de Base de Dades on volem recolzar el programa Moodle. En el nostre cas es tracta d'un MariaDB.
Seguirem endavant per a configurar els paràmetres referents a la BBDD. En aquest punt, és on s'ha de tenir en compte l' apartat corresponent. Ho omplirem amb les dades de l'usuari administrador que hem creat amb anterioritat:
Acceptarem els termes i condicions
Com no podria ser d'altra manera, hem hagut de trobar-nos amb altres incidències que haurem de solventar per a acabar la instal·lació:
Tots els punts corresponen a configuració de MariaDB, i el 2n i el 3r estic segur que estan definits al my.cnf. Per tant, des de la consola del CentOS haurem de buscar aquests paràmetres i canviar-los al valor demanat pel Moodle.
nano /etc/my.cnf.d/server.cnf
[server] innodb_file_per_table=1 innodb_large_prefix=1
Recarregarem la configuració de mariadb i revisarem aquests errors:
Per al punt que queda restant, a la documentació de Moodle es diu que s'han d'executar unes comandes des de l'administrador del SGBD on hi ha la BBDD del Moodle
USE Sql790278_1; SET SESSION sql_mode=STRICT_ALL_TABLES; SET GLOBAL innodb_file_format=Barracuda;
Finalment, tindrem l'entorn a punt per a acabar la instal·lació: Mentre va instal·lant, tindrem una pantalla estàtica que van apareixent els "mòduls" que es van instal·lant i, si entrem al SGBD i ens hi fixem, veurem que es van creant taules i es van omplint registres inicials.
Ara és moment de crear l'usuari administrador de l'entorn del Moodle:
Complimentarem la informació referent a noms del lloc, descripcions, zones horàries...