mysql créer un utilisateur s’il n’existe pas

J’ai une requête pour vérifier la liste des utilisateurs de mysql pour créer un nouvel utilisateur.

IF (SELECT EXISTS(SELECT 1 FROM `mysql`.`user` WHERE `user` = '{{ title }}')) = 0 THEN CREATE USER '{{ title }}'@'localhost' IDENTIFIED BY '{{ password }}' END IF; 

Mais je reçois cette erreur:

 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 

Dans 5.7.6 et ci-dessus, vous devriez pouvoir utiliser CREATE USER

 CREATE USER IF NOT EXISTS 'user'@'localhost' IDENTIFIED BY 'password'; 

Notez que la méthode 5.7.6 n’accorde aucune autorisation.


Si vous n’utilisez pas une version qui a cette capacité (quelque chose en dessous de 5.7.6), vous pouvez procéder comme suit:

 GRANT ALL ON `database`.* TO 'user'@'localhost' IDENTIFIED BY 'password'; 

Cela créera l’utilisateur s’il n’existe pas

Vous ne pouvez pas utiliser IF ALORS dans les instructions, vérifiez ici http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if

pour les fonctions IF et IF ().

j’utilise

SELECT EXISTS (SELECT DISTINCT user FROM mysql . user WHERE user = “username”) comme is_user

devrait retourner 1 s’il existe ou 0 s’il ne le fait pas