manejo de usuarios en MySQL
para acceder al servidor desde una máquina local
shell> mysql --user=root mysql -p
crear cuentas de usuario
# ver usuarios creados SELECT user,authentication_string,plugin,host FROM mysql.user; # cambiar root ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; # guardar los cambios FLUSH PRIVILEGES;
crea «dos» usuarios (el mismo, para acceder desde hosts diferentes), dándoles todos los privilegios
mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' WITH GRANT OPTION; mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' WITH GRANT OPTION;
crea un usuario par localhost sin contraseña que puede hacer hacer RELOAD y PROCESS (un usuario de emergencia para sistemas)
mysql> CREATE USER 'admin'@'localhost'; mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
para ver los permisos que tiene un usuario
mysql> SHOW GRANTS FOR 'admin'@'localhost';
asignar permisos concretos a usuarios:
mysql> CREATE USER 'custom'@'localhost' IDENTIFIED BY 'obscure'; mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP -> ON bankaccount.* -> TO 'custom'@'localhost';
revocar permisos:
mysql> REVOKE ALL ON *.* FROM 'user'@'localhost';
resetear contraseña
/via: https://www.ochobitshacenunbyte.com/2018/06/13/cambiar-contrasenas-de-usuarios-en-mysql-y-mariadb/
# versiones anteriores 5.7.5 SET PASSWORD FOR root@localhost=PASSWORD('');
# versiones posteriores 5.7.5 UPDATE mysql.user SET Password=PASSWORD(‘NuevaContraseña’) WHERE USER=’nombreUsuario’ AND Host=”NombreHost”; FLUSH PRIVILEGES;
ALTER USER ‘nombreUsuario’@’localhost’ IDENTIFIED BY ‘NuevaContraseña’;