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: 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:
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:
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:
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...
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;
De esta forma conseguimos ver directamente los permisos de Select, Insert, Update, etc... sin necesidad de especificarlos.
Bestial tio, gracias
ResponderEliminarSuper gracias por el dato bro
ResponderEliminarMuchas gracias por los aportes, excelente trabajo
ResponderEliminarmuy bueno , muy util , Gracias
ResponderEliminar