Чтобы создать пользователя в MySQL, если он еще не существует, вы можете использовать один из следующих методов:
Метод 1: использование операторов CREATE USER и GRANT
CREATE USER IF NOT EXISTS 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
FLUSH PRIVILEGES;
Метод 2: использование оператора INSERT IGNORE с таблицей mysql.user
INSERT IGNORE INTO mysql.user (User, Host, Password) VALUES ('username', 'localhost', PASSWORD('password'));
FLUSH PRIVILEGES;
Метод 3: использование оператора REPLACE INTO с таблицей mysql.user
REPLACE INTO mysql.user (User, Host, Password) VALUES ('username', 'localhost', PASSWORD('password'));
FLUSH PRIVILEGES;
Метод 4. Использование хранимых процедур
Вот пример хранимой процедуры, которая создает пользователя, если он не существует:
DELIMITER $$
CREATE PROCEDURE create_user_if_not_exists(IN username VARCHAR(255), IN password VARCHAR(255))
BEGIN
IF NOT EXISTS(SELECT 1 FROM mysql.user WHERE User = username) THEN
SET @createUserQuery = CONCAT('CREATE USER ', username, '@localhost IDENTIFIED BY ', password);
PREPARE stmt FROM @createUserQuery;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
FLUSH PRIVILEGES;
END IF;
END $$
DELIMITER ;
Чтобы выполнить хранимую процедуру, вы можете вызвать:
CALL create_user_if_not_exists('username', 'password');