Подтвердить что ты не робот

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
4b9b3361

Ответ 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';

Это создаст пользователя, если он не существует

Ответ 3

Я использую

SELECT EXISTS (SELECT DISTINCT user FROM mysql. user ГДЕ user= "имя пользователя" ) как is_user

должен возвращать 1, если существует, или 0, если он не