Webエンジニアのメモ帳

技術的な話を中心に書いています。

【MySQL】ユーザーを追加し、DBへの権限を与える

MySQLでユーザーを追加する方法を説明します。

手順1. ユーザーの追加

今回は、testUserというユーザーを作成します。パスワードはtestPassとします。

この場合、MySQLにログインして

CREATE USER "testUser" IDENTIFIED BY "testPass";

というSQL文を実行します。

手順2. 権限の追加

このままだと、このユーザーは何もできません。権限を持っていないためです。

今回はtestUsetに対し、testというデータベースの全てのテーブルの操作を許可するような権限を付与します。

実行するSQL文は以下です。

GRANT ALL PRIVILEGES ON test.* TO "testUser"@"%";

ちなみに、全てのDBへのアクセスを許可したい場合には、「test」の部分を「*」に変えます。

特定のテーブルのみ操作を許可する場合には、「*」の部分をテーブル名に変えます。

補足 アクセス元を限定する方法

testUserがlocalhostからのみDBにアクセスできるようにする場合、SQL文は以下のようになります。

CREATE USER "testUser"@"localhost" IDENTIFIED BY "testPass";
GRANT ALL PRIVILEGES ON test.* TO "testUser"@"localhost";

注意しないといけないのは、1行目のSQL文を見ればわかるように、ユーザーを作成する段階でアクセス元の指定が必要だということです。

これを忘れて「localhost」の部分を「%」にしてユーザーを作成してしまうと、2行目のSQL文章を実行したタイミングで以下のエラーになります。

ERROR 1133 (42000): Can't find any matching row in the user table