= manejo de usuarios en MySQL
{{tag>bbdd mysql user}}
== para acceder al servidor desde una máquina local
shell> mysql --user=root mysql -p
== crear cuentas de usuario
[[https://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html#priv_index|permisos y que implican]]
# 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’;