MySQLでユーザー作成する最も効率の良いやり方

MySQL
スポンサーリンク

※MySQL8ではCreate Userする必要があります

MySQL8では以下の手順を踏みましょう。

  1. ユーザー作成+パスワード設定
  2. ユーザーに権限付与

ユーザー作成+パスワード設定

以下の場合。

  • ユーザー名:user_name
  • パスワード:password123
CREATE USER 'user_name' IDENTIFIED BY 'password123';

ユーザーに権限付与

以下の場合。

  • 「user_name」ユーザーに、「database_name」データベース配下の全テーブルに対する全権限を付与。
GRANT ALL ON database_name.* TO 'user_name';

↑この場合、’user_name’@’%’ に権限が付与されます。
アクセス元の場所を限定したい場合は、以下の用に指定しましょう。というか、すべきです。セキュリティ上。

  • ‘user_name’@’localhost’
  • ‘user_name’@’192.168.%’

なので、自身のサーバからのアクセスのみを許可したい場合は、以下のとおりです。

GRANT ALL ON database_name.* TO 'user_name'@'localhost';

ALL権限の詳細↓

  • ALL または ALL PRIVILEGES 権限指定子は、短縮形です。これは、「特定の権限レベルで使用可能なすべての権限」 (GRANT OPTION を除く) を表します。たとえば、グローバルまたはテーブルレベルで ALL を付与すると、すべてのグローバル権限またはテーブルレベルのすべての権限が付与されます。

MySQLヘルプ

Create User する必要ない(MySQL5の話。MySQL8は違いますよー)

んですねー。
いきなりGRANTコマンドで良いんですな。

コマンド

GRANT ALL PRIVILEGES ON 
   `データベース名`.* 
TO 
   '新規作成するユーザー名'@'localhost' 
IDENTIFIED BY 
   '新規作成するユーザーのパスワード';

注意点

GRANT ALL PRIVILEGES ON 
   `データベース名`.* 
TO 
   '新規作成するユーザー名'@'localhost' 
IDENTIFIED BY PASSWORD 
   '新規作成するユーザーのパスワード';

ってやっちゃうと、

ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

というようなエラーが出てしまいます。
これは「新規作成するユーザーのパスワード」を、ハッシュ化されたパスワードで指定していないためです。
ハッシュ化していないパスワードで指定する場合には、「PASSWORD」を付けずにコマンド発行すること。

参考にしたサイト

http://server-helper.doorblog.jp/archives/6578594.html
ありがとうございました。

コメント