Los usuarios de MySQL son para los usuarios del propio servidor MySQL. Estos usuarios deben reservarse para que los use únicamente el administrador del servidor o las aplicaciones que requieren un usuario para ejecutarse (asigne un usuario separado para cada aplicación). El sistema de administración de usuarios de MySQL se creó específicamente para permitir el acceso controlado a la base de datos que se ejecuta en el servidor, NO para ser la base de la autenticación de usuarios en una aplicación web. Además, cualquier adición a la base de datos (y creación de usuarios) requerirá que tenga un usuario que ejecute la aplicación que tenga esos permisos en la base de datos. Si bien en sí no es una vulnerabilidad directa, si se encuentra una en su sistema PHP, podría empeorar su vida.
Nunca querrá que su aplicación pueda contaminar el espacio de nombres de su base de datos MySQL con bases de datos adicionales o (tablas para el caso). Durante el funcionamiento de su aplicación, solo debería poder crear, recuperar, actualizar y eliminar registros mediante Principio de privilegio mínimo , lo que significa que le otorgará a su base de datos acceso de usuario para hacer solo las cosas que requiere y nada más.
En lo que respecta al hash de contraseña, use bcrypt a través de la función crypt() de PHP . Guárdelo en la base de datos dentro de una tabla de usuarios.