Mysql

MySQL 添加/授予使用者(如果不存在)

  • November 27, 2018

我正在嘗試創建一個更新/安裝腳本,僅當它是全新安裝時才添加使用者和數據庫。該腳本為使用者使用隨機生成的密碼,因此使用StackOverflow 執行緒GRANT中建議的語句將不起作用。

  • 只有當使用者不存在時,有沒有辦法創建、設置密碼和授予使用者權限?
  • 我是否必須在腳本中執行檢查,然後執行語句,還是可以將其建構到 SQL 文件中?

您需要的是動態 SQL

SET @sql_found='SELECT 1 INTO @x';
SET @sql_fresh='GRANT ALL ON *.* TO randomuser@''%'' IDENTIFIED BY ''randompassword''';
SELECT COUNT(1) INTO @found_count FROM mysql.user WHERE user='randomuser' AND host='%';
SET @sql=IF(@found_count=1,@sql_found,@sql_fresh);
PREPARE s FROM @sql;
EXECUTE s;
DEALLOCATE PREPARE s;

如果@found_count為 1,則SELECT 1 INTO @x;執行。(這個查詢什麼都不做)

否則,GRANT ALL ON *.* TO randomuser@'%' IDENTIFIED BY 'randompassword';

試一試 !!!

引用自:https://dba.stackexchange.com/questions/105372