※MySQL8ではCreate Userする必要があります
MySQL8では以下の手順を踏みましょう。
- ユーザー作成+パスワード設定
- ユーザーに権限付与
ユーザー作成+パスワード設定
以下の場合。
- ユーザー名: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
を付与すると、すべてのグローバル権限またはテーブルレベルのすべての権限が付与されます。
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
ありがとうございました。
コメント