2012-08-14 70 views
8

我想做到這一點:MySQL使用變量創建用戶?

#Variables 
SET @username="jdoe", @password="secret"; 

# Insert a new MySQL User 
CREATE USER @[email protected]'localhost' IDENTIFIED BY @password;GRANT USAGE ON *.* TO @[email protected]'localhost' IDENTIFIED BY @password WITH MAX_QUERIES_PER_HOUR 120 MAX_CONNECTIONS_PER_HOUR 60 MAX_UPDATES_PER_HOUR 60 MAX_USER_CONNECTIONS 2; 

但得到:

#1064 - 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 '@[email protected]'localhost' IDENTIFIED BY @password' at line 2 

如何在CREATE USER語句中使用一個變量?

+0

可能重複http://stackoverflow.com/questions/11368966/syntax-error-from -create-user-with-variables-giving-username-and-password) – aleroot 2012-08-14 12:12:46

+1

@aleroot我不確定這是相同的問題,因爲它涉及到創建存儲過程。 – Nick 2012-08-14 12:19:39

回答

9

您可以使用dynamic SQL爲:

SET @query1 = CONCAT(' 
     CREATE USER "',@username,'"@"localhost" IDENTIFIED BY "',@password,'" ' 
     ); 
PREPARE stmt FROM @query1; EXECUTE stmt; DEALLOCATE PREPARE stmt; 

SET @query1 = CONCAT(' 
    GRANT USAGE ON *.* TO "',@username,'"@"localhost" IDENTIFIED BY "',@password,'" WITH 
      MAX_QUERIES_PER_HOUR 120 MAX_CONNECTIONS_PER_HOUR 60 MAX_UPDATES_PER_HOUR 60 
      MAX_USER_CONNECTIONS 2' 
     ); 
PREPARE stmt FROM @query1; EXECUTE stmt; DEALLOCATE PREPARE stmt; 
[語法錯誤從創建變量給出用戶名和密碼USER](的
+0

這似乎沒有工作......我得到'#1064 - 你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以獲得在'secret'附近使用的正確語法; 授予使用*。*到jdoe @'localhost'IDENTIFIED BY secret 'at line 1' – Nick 2012-08-14 11:56:37

+0

錯過了引號。嘗試更新查詢。 – Omesh 2012-08-14 12:36:20

+1

非常好,謝謝! – Nick 2012-08-14 12:44:17