ローカル開発環境のXAMPPでMySQL/MariaDBのユーザーを追加する
ローカル開発環境でWebサイトやWebアプリケーションの開発を行う時に、データベースへのアクセスや操作ができるユーザーを追加したい場合があります。
ここではローカル開発環境のXAMPPでデータベースを扱う時にユーザーを追加する方法をご紹介します。
WindowsのXAMPPで説明していきます。
macOSのMAMPやXAMPPでもディレクトリが違うだけで他は何も変わりありません。
まずはrootユーザーでログインしましょう。
XAMPPのMySQLのバイナリフォルダまで移動してMySQLモニタの起動しましょう。
現在のユーザーを確認してみましょう。
確認にはSELECT文を使います。
SELECT user, host FROM mysql.user;
パスワードも確認する場合は、「SELECT user, host, password FROM mysql.user;」とSELECTにカンマ区切りでpasswordを追加すればいいです。
ですが確認できるパスワードは暗号化済みのパスワードなのでなんの意味もありません。
それではユーザーの追加方法を見ていきましょう。
ユーザーの追加
MySQL/MariaDBでのユーザー追加にはCREATE文を使っていきますが、権限も一緒に追加する場合はGRANT文を使います。
ユーザーの追加方法は2パターンあります。
//ユーザーの追加
CREATE USER [ユーザ名] IDENTIFIED BY '[パスワード]';
//権限も含めてユーザーの追加
GRANT ALL ON *.* TO [ユーザ名] IDENTIFIED BY '[パスワード]';
実際にユーザーを追加してみます。
localhostからアクセス可能で、すべての権限を与える「hoge」というユーザーを追加します。
パスワードは「asdfghjkl」としてみます。
GRANT ALL ON *.* TO hoge@'localhost' IDENTIFIED BY 'asdfghjkl';
SELECT文で確認してみますと、hogeユーザーが追加されているのが確認できます。
「exit;」で一度ログアウトしてhogeユーザーでログインしてみます。
無事hogeユーザーで先程のパスワードでログインできました。
次の例は、localhostからアクセス可能で、「SELECT、UPDATE、INSERT、DELETE」を許可する場合です。
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO hoge@'localhost' IDENTIFIED BY 'asdfghjkl';
このようにアクセス制限と同時に細かな権限の制限を一緒に設定してユーザーを追加することもできます。
CREATE USERでユーザーだけ追加しても、そのユーザーは名前だけが出来ただけで何もできません。
あとから権限を追加していくかたちになります。
ユーザー権限の追加
CREATE USERでユーザーを追加しただけだと何もすることが出来ませんので、あとからユーザー権限を追加することになります。
ユーザー権限の追加は、rootユーザーでログインしてから他のユーザーの権限を追加します。
先程のユーザー追加の際にも記述したように「GRANT」で追加していきます。
hoge@’%’にすべての権限を追加
GRANT ALL ON *.* TO 'hoge'@'localhost';
またデータベースレベルで権限を追加できます。
データベース「project」に対してhoge@’localhost’からの接続ですべての権限を追加
GRANT ALL ON project.* TO hoge@'localhost';
データベース「project」に対してhoge@’%’からの接続で「SELECT、UPDATE、INSERT、DELETE」を許可
GRANT SELECT,INSERT,UPDATE,DELETE ON project.* TO hoge@'%';
権限の設定や変更をしたらその設定を反映させなければいけません。
権限設定の反映
設定を反映するには下記を実行します。
FLUSH PRIVILEGES;
その他、ユーザーに関するいろんな設定をご紹介します。
ユーザーの削除
ユーザーの削除にはDROP文を使います。
localhostからアクセス可能なhogeユーザーを削除する場合
DROP USER hoge@'localhost';
ユーザー権限の削除
ユーザー権限の削除にはREVOKE文を使います。
hogeユーザーのすべての権限を削除する場合
REVOKE ALL PRIVILEGES, GRANT OPTION FROM hoge@'localhost';
パスワードの変更
パスワードの変更にはSET文を使います。
「hoge@’localhost’」のパスワードを「lkjhgfdsa」に変更する場合
SET PASSWORD FOR hoge@'localhost'=PASSWORD('lkjhgfdsa');
XAMPPはローカル開発環境ではありますがホスト以外からのアクセスをさせることもありますので、いろいろと複数のユーザーでデータベースの管理をしたい場合は、細かく権限なども設定しておくとセキュリティ面でも安心です。