2012-11-13 14 views
60

私は新しいユーザを作成するためのmysqlユーザリストを確認するクエリを持っています。mysqlはユーザが存在しない場合に作成します

IF (SELECT EXISTS(SELECT 1 FROM `mysql`.`user` WHERE `user` = '{{ title }}')) = 0 THEN 
    CREATE USER '{{ title }}'@'localhost' IDENTIFIED BY '{{ password }}' 
END IF; 

しかし、私はこのエラーを取得:

ERROR 1064 (42000) at line 3: 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 'IF (SELECT EXISTS(SELECT 1 FROM `mysql`.`user` WHERE `user` = 'cms_localhost')) = 0 ' at line 1 

答えて

207

5.7.6では、上、あなたは5.7.6の方法が実際にどの権限を付与していないことをCREATE USER

CREATE USER IF NOT EXISTS 'user'@'localhost' IDENTIFIED BY 'password'; 

注意を使用することができるはずです。


あなたは、この機能(5.7.6以下のものを)持っているバージョンを使用していない場合は、次のことができます。そうでない場合、これは、ユーザーが作成されます

GRANT ALL ON `database`.* TO 'user'@'localhost' IDENTIFIED BY 'password'; 

私は

SELECTはEXISTSを使用

+6

私はこれが本当に受け入れられた答えであるべきだと思います。 – GoinAum

+1

ユーザーが存在し、別のパスワードを使用していた場合、パスワードが変更されますか? – m3z

+2

Nevermind - 自分の質問に答えました - そうですが - ホストが異なる場合、ユーザーを置き換えません – m3z

-4

存在する(mysqlは異なるuserを選択します。userをWHERE user =「usernamそうでない場合is_user

としてE」)が存在する場合に1を返すか0べき

+2

ご質問は確認方法ではなく、作成方法 – VladL

関連する問題