mysqlが存在しない場合はユーザーを作成します


94

新しいユーザーを作成するために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

回答:


275

5.7.6以降では、 CREATE USER

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

5.7.6メソッドは実際には権限を付与しないことに注意してください。


この機能を備えたバージョン(5.7.6より前のもの)を使用していない場合は、以下を実行できます。

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

これは、存在しない場合にユーザーを作成します


MySQL 8を使用している場合、GRANT ALLメソッドはユーザーを作成しないことに注意してください。


3
ユーザーが存在し、別のパスワードを持っている場合、これはパスワードを変更しますか?
m3z 2014年

5
Nevermind-私自身の質問に答えました-はい、あります-しかし、ホストが異なる場合、ユーザーの代わりにはなりません
m3z

1
@ m3z技術的には、2つの異なるホストにログインできるユーザーがいる場合、それらは同じユーザーではありません。彼らは異なる許可、異なるパスワード、およびすべてを持つことができます。
Ascherer 2014年

1
はい、@ roundar、しかしそれはセキュリティホールを残します。注意してください。
Ascherer、2015

1
パスワード@ B166ERを指定しない場合、これは安全ではありません。
Ascherer 2017

-3

私が使う

存在するものを選択してください(SELECT DISTINCT user FROM mysqluserWHERE user= "ユーザ名")is_userとして

存在する場合は1を、存在しない場合は0を返す必要があります


2
問題は、確認する方法ではなく、作成する方法です
VladL
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.