Listar bases de datos y usuarios en MySQL y MariaDB

En la web durante estos ya ocho años he hablado varias veces de las populares sistemas de bases de datos MySQL y Mariadb. En esta ocasión hablaremos de como listar los bases de datos de un sistema además de sus usuarios, y las relación entre ambos.

Listar bases de datos en MySQL y MariaDB

Quizas esta es la parte más fácil a la vez que la más utilizada, ya es muy fácil listar todas las bases de datos de un sistema. Aunque no hace falta que os diga que para ello necesitamos permisos de super usuario.

Veamos un ejemplo:

MariaDB [(NONE)]> SHOW DATABASES;
+--------------------+
| DATABASE           |
+--------------------+
| drupaldb1          |
| drupaldb2          |
| information_schema |
| mysql              |
| performance_schema |
| test               |
| wpdb1              |
| wpdb2              |
| wpdb3              |
+--------------------+
9 ROWS IN SET (0.00 sec)

En cambio si utilizamos un usuario que tenga sólo permisos sobre una o varias bases de datos:

[root@servmariadb1 ~]# mysql -udrupaluser1 -p
Enter password:
Welcome TO the MariaDB monitor.  Commands END WITH ; OR \g.
Your MariaDB connection id IS 4
Server version: 10.1.36-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab AND others.
TYPE 'help;' OR '\h' FOR help. TYPE '\c' TO clear the CURRENT INPUT statement.
 
MariaDB [(NONE)]> SHOW DATABASES;
+--------------------+
| DATABASE           |
+--------------------+
| drupaldb1          |
| information_schema |
+--------------------+
2 ROWS IN SET (0.00 sec)
 
MariaDB [(NONE)]>

Listar usuarios MySQL y Mariadb

Para ver los usuarios de un sistema, debemos utilizar una serie de consultas o utilizando el término inglés «querys»

Al igual que con las bases de datos, para listar todos los usuarios de un sistema debemos ser super usuario. Para ello consultaremos la tabla del sistema «mysql.user«, tal como sigue:

SELECT * FROM mysql.user;

Esto nos mostrará una información muy extensa de los usuarios del sistema, quizás demasiado extensa. Para ello vamos a acortar el resultado de la consulta, listando solo la información que nos interesa.

SELECT host, USER, password FROM mysql.user;

Con el resultado en mi caso:

MariaDB [(NONE)]> SELECT host, USER FROM mysql.user;
+--------------+-------------+
| host         | USER        |
+--------------+-------------+
| 127.0.0.1    | root        |
| 192.168.0.20 | testuser    |
| ::1          | root        |
| localhost    | drupaluser1 |
| localhost    | drupaluser2 |
| localhost    | root        |
| localhost    | wpuser1     |
| localhost    | wpuser2     |
| localhost    | wpuser3     |
+--------------+-------------+
9 ROWS IN SET (0.00 sec)

De esta manera listamos el nombre de los usuarios más el host donde están ubicados.

Otra consulta muy interesante, y esta se la debo agraceder a Emiliano de la web linuxito.com, nos permite mostrar los usuarios que tienen permisos sobre ciertas bases de datos:

  1. MariaDB [(NONE)]> SELECT u.User,Db FROM mysql.user u,mysql.db d WHERE u.User=d.User;
  2. +-------------+-----------+
  3. | USER        | Db        |
  4. +-------------+-----------+
  5. | wpuser1     | wpdb1     |
  6. | testuser    | test      |
  7. | wpuser2     | wpdb2     |
  8. | wpuser3     | wpdb3     |
  9. | drupaluser1 | drupaldb1 |
  10. | drupaluser2 | drupaldb2 |
  11. +-------------+-----------+
  12. 6 ROWS IN SET (0.02 sec

Antes de acabar os quiero recordar los artículos que tenemos en la web hasta ahora sobre estos sistemas de bases de datos relacionales:

Crear una base de datos MySQL en GNU/Linux

Tareas básicas en MySQL

Importar y exportar bases de datos en MySQL

Programar copias de seguridad para MySQL y MariaDB

Trabajar con diferentes instancias MySQL

Configurar MariaDB y MySQL para acceso remoto

Cambiar contraseñas de usuarios en MySQL y MariaDB

Crear un cluster con MariaDB Galera Cluster

Instalar MariaDB vía Docker

Instalar MariaDB en Centos 7

Y esto es todo. Espero que os sea de utilidad este artículo en algún momento. Nos vamos leyendo. Saludos