Crear un usuario y asignar permisos en MySQL

Normalmente para configurar el acceso de una aplicación web a la base de datos crearemos una cuenta de servicio para esa aplicación, y le daremos permisos según necesitemos, pero solamente a esa base de datos.

Esta es una de esas cosas que uno hace mil veces pero nunca se acuerda de la sintaxis correcta. Aqui lo teneis:

CREATE USER 'nombre_de_usuario'@'localhost' IDENTIFIED BY 'vuestra_password';
GRANT ALL PRIVILEGES ON nombre_de_base_de_datos.* TO 'nombre_de_usuario'@'localhost';
FLUSH PRIVILEGES;

Si queremos asignarle todos los permisos para todas las bases de datos, el GRANT sería así:

GRANT ALL PRIVILEGES ON *.* TO 'nombre_de_usuario'@'localhost';

Normalmente, antes habremos creado la base de datos a mano, o importando los datos de algún archivo. Crear la base de datos en MySQL puede ser tan sencillo como:

CREATE DATABASE nombre_de_base_de_datos;

Suele ser buena idea probar que ha funcionado correctamente. La mejor forma es probar el acceso usando el terminal:

mysql --user=nombre_de_usuario --password=vuestra_password nombre_de_base_de_datos

Si todo está correcto, nos abrirá una sesión de MySQL en el terminal. Si no conecta, es que hemos hecho mal alguno de los pasos anteriores.