Esta web utiliza cookies, puedes ver nuestra política de cookies, aquí Si continuas navegando estás aceptándola

Configuración de usuarios en MySQL


MySQL permite la configuración de usuarios para las distintas bases de datos, de este modo solo los usuarios autorizados serán capaces de realizar ciertas operaciones sobre las bases de datos definidas.

 

Consultar usuarios y permisos:

use mysql
SELECT User,Host from user;
+------+----------------+
| User | Host           |
+------+----------------+
| root | 127.0.0.1      |
| root | localhost      |
+------+----------------+


SHOW GRANTS FOR 'root'@'localhost';
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                                              |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD 'XXXX' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------+

 

Como podemos ver root desde la máquina local tienen todos los privilegios en todas las bases de datos.

 

Crear usuarios:

use mysql;
CREATE USER user00@'%' IDENTIFIED BY 'XXXX';
GRANT ALL PRIVILEGES ON prueba.* TO user00@'%' IDENTIFIED BY 'XXXX';
GRANT SELECT ON prueba.* TO user01@'localhost' IDENTIFIED BY 'XXXX';
GRANT SELECT, INSERT, DELETE ON prueba.* TO user02@'localhost' IDENTIFIED BY 'XXXX';

FLUSH PRIVILEGES;
use mysql

show grants for user00@'%';
+-------------------------------------------------------------------------------------------------------+
| Grants for user00@%                                                                                   |
+-------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user00'@'%' IDENTIFIED BY PASSWORD '*8A1AE429B69F39D29052560894682AC750BC9062' |
| GRANT ALL PRIVILEGES ON `prueba`.* TO 'user00'@'%'                                                    |
+-------------------------------------------------------------------------------------------------------+


show grants for user01@'localhost';
+---------------------------------------------------------------------------------------------------------------+
| Grants for user01@localhost                                                                                   |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user01'@'localhost' IDENTIFIED BY PASSWORD '*8A1AE429B69F39D29052560894682AC750BC9062' |
| GRANT SELECT ON `prueba`.* TO 'user01'@'localhost'                                                            |
+---------------------------------------------------------------------------------------------------------------+


show grants for user02@'localhost';
+---------------------------------------------------------------------------------------------------------------+
| Grants for user02@localhost                                                                                   |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user02'@'localhost' IDENTIFIED BY PASSWORD '*8A1AE429B69F39D29052560894682AC750BC9062' |
| GRANT SELECT, INSERT, DELETE ON `prueba`.* TO 'user02'@'localhost'                                            |
+---------------------------------------------------------------------------------------------------------------+

 

NOTA: Es posible crear y asignar el usuario en un solo paso, tan solo hay que asignarle ciertos privilegios y el usuario será creado de forma automática.
Los permisos USAGE son para que MySQL sea consciente de que el usuario existe sin asignarle ningún permiso real.

 

Eliminar permisos y eliminar usuario:

REVOKE ALL PRIVILEGES ON *.* FROM user02@'localhost';
drop user user02@'localhost';
use mysql

select user, host from user where user='user02';
Empty set (0.01 sec)


Cambiar password usuario:

SET PASSWORD FOR user01@'localhost' = PASSWORD('YYYY');

 

Con esto podremos tener controlados los accesos a nuestras bases de datos, de todos modos no está de mas que apliquemos reglas de firewall permitiendo el acceso al puerto 3306 solo desde ips de confianza.


Autor: Kr0m -- 26/02/2014 12:33:03