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'
- ご想像通り、これはそのユーザのパスワードを設定します。
MySQLにログインします。
mysql -u root
を作成して付与します。
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
別の方法として、データベースへの完全な無制限のアクセスを許可したいだけの場合(例えば、テスト用のローカルマシンでは、以下のように匿名ユーザーにアクセスを許可することができます。
GRANT ALL PRIVILEGES ON dbTest.* To ''@'hostname'
これは、開発中のジャンクデータには適しています。大事なものには使わないでください。