mysql创build用户如果不存在

我有一个查询来检查mysql用户列表创build新用户。

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

但是我得到这个错误:

 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 

在5.7.6及以上版本中,您应该可以使用CREATE USER

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

请注意,5.7.6方法实际上并没有授予任何权限。


如果您没有使用具有此function的版本(5.7.6以下的版本),则可以执行以下操作:

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

这将创build用户,如果它不存在

你不能在语句中使用IF THEN,请点击http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if

用于IF语句和IF()函数。

我用

SELECT EXISTS(selectDISTINCT usermysqluser WHERE user =“用户名”)作为is_user

应该返回1,如果不存在,则返回0