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

Чтобы создать пользователя в 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');