hy000 - mysql error 1812
mysql crea usuario si no existe (3)
Tengo una consulta para verificar la lista de usuarios de mysql para crear un nuevo usuario.
IF (SELECT EXISTS(SELECT 1 FROM `mysql`.`user` WHERE `user` = ''{{ title }}'')) = 0 THEN
CREATE USER ''{{ title }}''@''localhost'' IDENTIFIED BY ''{{ password }}''
END IF;
Pero me sale este error:
ERROR 1064 (42000) at line 3: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''IF (SELECT EXISTS(SELECT 1 FROM `mysql`.`user` WHERE `user` = ''cms_localhost'')) = 0 '' at line 1
En 5.7.6 y superior, debería poder usar CREATE USER
CREATE USER IF NOT EXISTS ''user''@''localhost'' IDENTIFIED BY ''password'';
Tenga en cuenta que el método 5.7.6 en realidad no otorga ningún permiso.
Si no está utilizando una versión que tiene esta capacidad (algo por debajo de 5.7.6), puede hacer lo siguiente:
GRANT ALL ON `database`.* TO ''user''@''localhost'' IDENTIFIED BY ''password'';
Esto creará el usuario si no existe
No puede utilizar IF THEN en las declaraciones, consulte aquí http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if
para la declaración IF y las funciones IF ().
yo suelo
SELECCIONE EXISTS (SELECCIONE DISTINCT user
FROM user
mysql
WHERE user
= "nombre de usuario") como is_user
debe devolver 1 si existe o 0 si no lo hace