Buscar

Linux: Mysql ver usuarios y permisos

En este post explicaremos como ver los usuarios y permisos que tenemos en MySQL o MariaDB.

Si conectamos a un MySQL, veremos que disponemos de comandos como show databases para ver las bases de datos pero no los usuarios.

Para saber los usuarios que tenemos en MySQL, deberemos realizar una consulta utilizando select en la base de datos de sistema.

Linux: Mysql ver usuarios y permisos: Conectar a la base de datos


En primer lugar conectamos con el cliente de MySQL a la base de datos:

mysql -u root -p

En este caso, conectamos con MySQL con el usuario root y que nos pida contraseña.

Otro ejemplo de conexión, seria el siguiente:

mysql -u admin -p`cat /etc/psa/.psa.shadow`

Según este ejemplo, estaríamos conectando con la base de datos con el usuario: admin y estaríamos extrayendo la contraseña del interior del fichero: /etc/psa/.psa.shadow

Linux: Mysql ver usuarios y permisos: Listar usuarios


Una vez establecida la conexión con el cliente MySQL, para ver todos los usuarios, bastaría con ejecutar:

SELECT User, Host FROM mysql.user;

La columna host indica desde que sitios está permitido conectar el usuario en cuestión.

Ejemplo:

Linux: Mysql ver usuarios y permisos

Linux: Mysql ver usuarios y permisos: Listar permisos

 

Para listar los permisos podemos utilizar el comando:

SHOW GRANTS;

Con el comando SHOW GRANTS;, vemos los permisos del usuario actual.

Si estamos conectados con el usuario admin, veremos los permisos del usuario admin.

Ejemplo:

Linux: Mysql ver usuarios y permisos

Si nos fijamos en este ejemplo, podemos ver que si ejecutamos: SELECT CURRENT_USER(); aparece el usuario con el cual estamos conectados.

Por otro lado, si ejecutamos: SHOW GRANTS;, vemos como nos muestra todas aquellas bases de datos a las que tiene acceso el usuario admin.

En este caso, son todas las bases de datos: *.*

Ahora bien: ¿Cómo podemos ver los permisos que tiene cierto usuario distinto al que estamos conectados?

La respuesta es muy sencilla, basta con ejecutar:

SHOW GRANTS FOR 'Usuario';

Ejemplo:

Linux: Mysql ver usuarios y permisos

En este caso vemos como el usuario: user_SYSADMIT tiene permisos sobre la base de datos: SYSADMIT-DB

Otra forma de revisar los permisos es desde el punto de vista de la base de datos.

Es decir: Sobre cierta base de datos: ¿Qué usuarios tienen  permisos?

Bastaría con ejecutar:

select user,host,insert_priv,update_priv,delete_priv from mysql.db where db='SYSADMIT-DB';

Ejemplo:

Linux: Mysql ver usuarios y permisos

En este ejemplo, vemos que el usuario: user_SYSADMIT dispone de los permisos de: Insert, update y delete sobre la base de datos: SYSADMIT-DB


Si ejecutamos:  describe mysql.db;

Podremos ver los distintos tipos posibles por los que podemos consultar: Select, Insert, Update, Delete, Create, etc...

Linux: Mysql ver usuarios y permisos

Otra forma de verlo seria ejecutando la consulta en modo lista:

Ejemplo: Listamos todos los usuarios y permisos que tienen acceso a la base de datos: SYSADMIT-DB

SELECT * FROM mysql.db WHERE Db = 'SYSADMIT-DB'\G;

Linux: Mysql ver usuarios y permisos

De esta forma conseguimos ver directamente los permisos de Select, Insert, Update, etc... sin necesidad de especificarlos.

4 comentarios: