在一個MySQL腳本,我願做這樣的事情:如何使用動態用戶名創建用戶?
SET @username = CONCAT(DATABASE(), "[email protected]`%`");
CREATE USER @username;
,但我不能化解在CREATE USER行的語法錯誤。
有沒有辦法轉義內聯變量,以便CREATE USER可以有一個動態創建的用戶?
在一個MySQL腳本,我願做這樣的事情:如何使用動態用戶名創建用戶?
SET @username = CONCAT(DATABASE(), "[email protected]`%`");
CREATE USER @username;
,但我不能化解在CREATE USER行的語法錯誤。
有沒有辦法轉義內聯變量,以便CREATE USER可以有一個動態創建的用戶?
你可以用prepared statements做到這一點:
set @sql=concat("create user '", database(), "-haha", "'@'%' identified by 'whatever';");
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
select @sql;
select * from mysql.user where user = 'playground-haha';
你不能在'CREATE USER'語句中使用參數AFAIK。 –
也準備好語句不是一個選項。 – fancyPants
@tombom:爲什麼不呢?從MySQL v5.1開始,可以使用'CREATE USER' [在準備好的語句中](http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-prepared-statements.html)。 – eggyal