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:
MariaDB [(NONE)]> SELECT u.User,Db FROM mysql.user u,mysql.db d WHERE u.User=d.User;
+-------------+-----------+
| USER | Db |
+-------------+-----------+
| wpuser1 | wpdb1 |
| testuser | test |
| wpuser2 | wpdb2 |
| wpuser3 | wpdb3 |
| drupaluser1 | drupaldb1 |
| drupaluser2 | drupaldb2 |
+-------------+-----------+
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
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
Y esto es todo. Espero que os sea de utilidad este artículo en algún momento. Nos vamos leyendo. Saludos