MySQL

新しくシステムを作るときのMySQLの設定

はじめに

実働しているシステムでrootを使っている人もいるかと思います。しかし、普通に考えてセキュリティ的にはよろしくないですよね。
かくゆう私もこれまで「めんどくさい」、「そんなことまで考えている余裕がない」っていうので、そのままrootを使う形でシステムを作っていました。
rootということでこの記事を書きたいと思います。

決してrootを使わないということではなく、システムとrootを切り離すということをお間違え無く。

ユーザの作成

まずは、rootでMySQLにログインして下さい。
いつも通りのmysql -u root -pです。
ユーザ名をuser、パスワードをpasswordとします。
その場合、ユーザの作成は以下のコードになります。

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

次のコードを実行してユーザが作成されているか確認しましょう。

SELECT User, Host FROM mysql.user;

データベースの作成

もしも、使用するデータベースが既に作成されているのならば、このステップは必要ありません。

作成するデータベースをdbとします。
実行するコードは以下です。

CREATE DATABASE `db`;

ユーザの権限の変更

今のままでは、作成したユーザはどのデータベースにもアクセス出来ません。データベースにアクセス出来る様にしましょう。

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE VIEW, SHOW VIEW ON `db`.* TO 'user'@'localhost';

これで、db内ではSELECTINSERTDELETECREATE TABLECREATE VIEWSHOW VIEWが出来る様になりました。

もしも、特定のテーブルにおいて権限を外したい場合は、

REVOKE 権限 ON `db`.`テーブル名` TO 'user'@'localhost';

です。
権限とテーブル名をそれぞれ置き換えて使って下さい。

権限の確認のコードは以下です。

SHOW GRANTS FOR 'user'@'localhost';

追記

もしも、外部キーを使うのであれば、権限にREFERENCESが必要です。

GRANT REFERENCES ON `db`.* TO 'user'@'localhost';

このコードで外部キーに関する権限も追加出来ます。
権限の削除と同様、追加する権限のみを書けば大丈夫です。

さいごに

ここまで終われば、rootからログアウトして、userでログインし直して、一通りの作業が出来るかどうかの確認をお願いします。

ただものが作れただけでなく、少しずつ細かいところにも気を配っていこうと思っています。

参考リスト