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