LoginSignup
2
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-01-14

はじめに

実働しているシステムで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でログインし直して、一通りの作業が出来るかどうかの確認をお願いします。

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

参考リスト

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2