Mysql создать пользователя, если он не существует
У меня есть запрос, чтобы проверить список пользователей mysql для создания нового пользователя.
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
Ответы
Ответ 1
В 5.7.6 и выше вы должны иметь возможность использовать CREATE USER
CREATE USER IF NOT EXISTS 'user'@'localhost' IDENTIFIED BY 'password';
Обратите внимание, что метод 5.7.6 фактически не предоставляет никаких разрешений.
Если вы не используете версию, которая имеет эту возможность (что-то ниже 5.7.6), вы можете сделать следующее:
GRANT ALL ON `database`.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Это создаст пользователя, если он не существует
Ответ 2
Вы не можете использовать IF THEN в операторах, здесь проверьте http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if
для операторов IF и функций IF().
Ответ 3
Я использую
SELECT EXISTS (SELECT DISTINCT user
FROM mysql
. user
ГДЕ user
= "имя пользователя" ) как is_user
должен возвращать 1, если существует, или 0, если он не