MySQLで新規ユーザーを作成し、そのユーザーに1つのデータベースへのフルアクセス権を与える。

MySQLに新しいユーザーを作成し、create database dbTest;のようなコマンドで作成したdbTestという1つのデータベースにのみフルアクセスできるようにしたいと考えています。これを行うための MySQL コマンドは何でしょうか。

このようにしてユーザーを作成してみてください。

CREATE USER 'user'@'hostname';

このユーザにデータベース dbTest へのアクセス権を与えるには、以下を試してください。

GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';

コードやサイトが同じマシンでMySQLにアクセスしている場合、ホスト名はlocalhostになります。

では、分解してみましょう。

GRANT` - ユーザーを作成し、データベースやテーブルなどに権限を与えるためのコマンドです。

ALL PRIVILEGES` - これは、ユーザーがすべての標準的な権限を持つことを示します。ただし、これにはGRANTコマンドを使用する権限は含まれません。

dbtest.` - dbtestデータベース全体で使用するために、これらの権限を適用するようにMySQLに指示します。必要に応じて、 を特定のテーブル名やストア ルーチンで置き換えることができます。

TO 'user'@'hostname' - 'user'は、作成するユーザーアカウントのユーザー名です。注意:シングルクォートを入れなければなりません。 'hostname'は、ユーザが接続できるホストをMySQLに伝えます。同じマシンからのみ接続したい場合は、localhostを使用してください。

IDENTIFIED BY 'password' - ご想像通り、これはそのユーザのパスワードを設定します。

解説 (10)

データベースにユーザーを作成し、すべての権限を与えるには

MySQLにログインします。

mysql -u root

を作成して付与します。

GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';

Anonymous user (for local testing only)

別の方法として、データベースへの完全な無制限のアクセスを許可したいだけの場合(例えば、テスト用のローカルマシンでは、以下のように匿名ユーザーにアクセスを許可することができます。

GRANT ALL PRIVILEGES ON dbTest.* To ''@'hostname'

注意してください

これは、開発中のジャンクデータには適しています。大事なものには使わないでください。

解説 (4)

CREATE USER]1ステートメントを使って新しいユーザーを作成し、GRANTを使ってユーザーに権限を与えることができます。

解説 (1)