Mi Blog

No te olvides seguirme en Facebook.

Tan solo tienes que hacer click en Me Gusta

 

 

x

⋆ Cómo listar los privilegios de usuarios en MySQL o MariaDB

⋆ Cómo listar los privilegios de usuarios en MySQL o MariaDB

(Tiempo estimado: 6 - 12 minutos)

MySQL y MariaDB, a parte de disponer de usuarios de acceso, dispone de privilegios de acceso para cada uno de los usuarios y bases de datos del sistema. Los privilegios son muy útiles ya que podemos gestionar qué usuarios pueden acceder a qué bases de datos, desde que equipo remoto se pueden conectar y que tipos de acceso tienen (insertar/actualizar/borrar etc...)

Seguid leyendo y os enseñaré a listar los privilegios de cada uno de los usuarios de un SGBD MySQL ó MariaDB...

 

 

¿QUÉ SON LOS PRIVILEGIOS EN MYSQL/MARIADB?

Los privilegios o permisos son una serie de acciones que le están permitidos a los usuarios o a un usuario en concreto en un SGBD (Sistema Gestor de Bases de Datos):

Aquí algunos de los privilegios básicos:

  • CREATE permite crear nuevas tablas o bases de datos
  • DROP permite eliminar tablas o bases de datos
  • DELETE permite eliminar registros de tablas
  • INSERT permite insertar registros en tablas
  • SELECT permite leer registros en las tablas
  • UPDATE permite actualizar registros en las tablas
  • GRANT OPTION permite remover permisos de usuarios
  • SHOW DATABASE Permite listar las bases de datos existentes

 

 

Privilegios y permisos son básicamente lo mismo

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • Un PC con cualquier Sistema Operativo
  • Servidor MySQL/MariaDB y acceso de administrador al SGBD de MySQL/MariaDB

 

 

2.- CONECTAR AL SGBD (SISTEMA GESTOR DE BASES DE DATOS)

El primer paso es conectar al servidor de bases de datos o SGBD. Para ello, desde consola y desde cualquier Sistema Operativo e independientemente si el SGBD es MySQL o MariaDB, ejecutaremos un comando -como el siguiente- respetando la sintaxis y los espacios. La sintaxis es la siguiente:

raul@debian:~$ mysql -h [equipo] -u [usuario] -p

 

 

Por ejemplo, para conectar al servidor local ubicado en la misma máquina, con el usuario administrador root, introduciremos lo siguiente:

raul@debian:~$ mysql -u root -p
Enter password: ********
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 318
Server version: 10.4.14-MariaDB mariadb.org binary distribution

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)]>

 

 

3.- LISTAR TODO LOS USUARIOS

La tabla user es donde el SGBD guarda toda la información relativa a los usuarios junto a sus privilegios globales.

Si deseamos listar todos los usuarios de un servidor MySQL/MariaDB, simplemente debemos seleccionar dicha tabla y la columna "User". La tabla user pertenece a la tabla mysql. En el siguiente ejemplo, mostramos el nombre de todos los usuarios almacenados en la tabla user:

MariaDB [(none)]> SELECT User FROM mysql.user;
+----------+
| User |
+----------+
| newuser |
| remote |
| telegraf |
| root |
| root |
| newuser |
| pma |
| remote |
| root |
| sysadmin |
| telegraf |
+----------+
11 rows in set (0.010 sec)

4.- LISTAR LOS PRIVILEGIOS DE CADA USUARIO

Para listar los privilegios de cada usuario, usaremos SHOW GRANTS dentro de MySQL para mostrar los privilegios. Si por defecto, ejecutamos solamente SHOW GRANTS, estaremos mostrando los privilegios del usuario actual con el que estamos ejecutando el comando. En el siguiente ejemplo, el usuario utilizado es root:

MariaDB [(none)]> SHOW GRANTS;
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` IDENTIFIED BY PASSWORD '*84AAC12F54AB666ECFC2A83C676908C8BBC381B1' WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)

 

 

La explicación de los privilegios anteriores para el usuario root son:

  • El usuario root tiene todos los privilegios, en todas las bases de datos, siempre que entre desde localhost identificado con una password cifrada y puede conceder mas privilegios a otros usuarios.
  • Esto permite que el usuario externo sea un proxy del segundo usuario; es decir, tener los privilegios del segundo usuario. En otras palabras, el usuario externo es un "usuario proxy" (un usuario que puede hacerse pasar por otro usuario o ser conocido como otro) y el segundo usuario es un "usuario proxy" (un usuario cuya identidad puede ser asumida por un usuario proxy).

 

 

Para ver los privilegios del usuario "newuser" y host "%" , ejecutaremos lo siguiente:

MariaDB [(none)]> SHOW GRANTS FOR 'newuser'@'%';
+----------------------------------------------------------+
| Grants for newuser@% |
+----------------------------------------------------------+
| GRANT USAGE ON *.* TO `newuser`@`%` |
| GRANT ALL PRIVILEGES ON `gestco`.* TO `newuser`@`%` |
| GRANT ALL PRIVILEGES ON `vivelamagia`.* TO `newuser`@`%` |
+----------------------------------------------------------+
3 rows in set (0.000 sec)

 

 

La explicación de los privilegios anteriores para el usuario "newuser" y host "%" son:

  • La primera línea significa que el usuario newuser podrá conectarse desde cualquier equipo remoto y sin contraseña al SGBD
  • La siguiente línea significa que tendrá todos los privilegios en la base de datos gestco el usuario newuser entrando desde cualquier equipo remoto
  • La tercera línea significa que el usuario newuser tendrá acceso total a la base de datos vivelamagia conectando desde cualquier equipo remoto

 

Para ver los privilegios del usuario "remote" y host "%" , ejecutaremos lo siguiente:

MariaDB [(none)]> SHOW GRANTS FOR 'remote'@'%';
+--------------------------------------------------------+
| Grants for remote@% |
+--------------------------------------------------------+
| GRANT USAGE ON *.* TO `remote`@`%` |
| GRANT ALL PRIVILEGES ON `production`.* TO `remote`@`%` |
+--------------------------------------------------------+
2 rows in set (0.001 sec)

 

 

La explicación de los privilegios anteriores para el usuario "remote" y host "%" son:

  • La primera línea significa que el usuario remote podrá conectarse desde cualquier equipo remoto y sin contraseña al SGBD
  • La siguiente línea significa que tendrá todos los privilegios en la base de datos production el usuario remote entrando desde cualquier equipo remoto

 

 

Para ver los privilegios del usuario "telegraf" y host "localhost", ejecutaremos lo siguiente:

MariaDB [(none)]> SHOW GRANTS FOR 'telegraf'@'localhost';
+-----------------------------------------------------------------------------------------------------------------+
| Grants for telegraf@localhost |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `telegraf`@`localhost` IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' |
| GRANT SELECT ON `gestco`.* TO `telegraf`@`localhost` |
+-----------------------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)

 

 

La explicación de los privilegios anteriores para el usuario "telegraf" y host "localhost" son:

  • La primera línea significa que el usuario telegraf podrá conectarse desde localhost y con contraseña al SGBD
  • La siguiente línea significa que tendrá solamente permisos de lectura en la base de datos telegraf el usuario telegraf entrando desde localhost

 

 

Para ver los privilegios del usuario "telegraf" y host "%" , ejecutaremos lo siguiente:

MariaDB [(none)]> SHOW GRANTS FOR 'telegraf'@'%';
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for telegraf@% |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `telegraf`@`%` |
| GRANT ALL PRIVILEGES ON `production_ba`.* TO `telegraf`@`%` |
| GRANT SELECT, INSERT, UPDATE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER, DELETE HISTORY ON `production_ma`.* TO `telegraf`@`%`' |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.000 sec)

 

 

La explicación de los privilegios anteriores para el usuario "telegraf" y host "%" son:

  • La primera línea significa que el usuario telegraf podrá conectarse desde cualquier equipo remoto y sin contraseña al SGBD
  • La siguiente línea significa que tendrá todos los privilegios en la base de datos production_ba el usuario telegraf entrando desde cualquier equipo remoto
  • La tercera línea significa que el usuario telegraf tendrá acceso total menos DELETE a la base de datos telegraf conectando desde cualquier equipo remoto

 

 

% significa que el usuario puede acceder desde cualquier equipo remoto.

 

 

ENJOY!


Raúl Prieto Fernández

Sitio Web: raulprietofernandez.net

Si quieres ir rápido, ve solo. Si quieres llegar lejos, ve acompañado.

Escribir un comentario

Código de seguridad
Refescar