skillup

技術ブログ

Database

MySQLのセキュアな設定

投稿日:2017年3月6日 更新日:

以前SSHの設定についていろいろ書いたんで今回はMySQLに関して。

基本的な処方箋(MySQLに限らないかも)

  • ウィルスソフトのインストール
  • できればデータベースサーバーとアプリのサーバーは分ける
  • ポートを閉じる
  • 入れるソフトは必要最小限
  • アップデートやパッチは最新のものを取り入れよう
  • 基本的な考え方としては権限をなるべく小さくする

ホストのアクセスを制限する

全て /etc/my.cnf へ入力です。

ローカルのみの接続にする

上記を/etc/my.cnfにいれるとローカルのみの接続になります。

また下記のように書くとつなげることのできるホストを制限できます。

LOCAL INFILEコマンドを無効にする

これまた不正な攻撃を許してしまうので、使用不能にしてしまいましょう。

昔はCSVを入れたりしたときに使ったんですけど、今はあまり使わないですな。

rootのユーザー名とパスワードを変更

rootユーザーは最大の権限を持つユーザーであり、非常に危険なので、絶対に使われてはいけません。

そこでセキュアな設定としてはrootユーザーの名称とパスワードを変更してしまうことです。

パスワードを変更するのはよくあることだけどユーザー名を変更するという発想はなかったですね。

テストデータベースや匿名ユーザーの消去

普段、使っているとあまり気づきませんが、ディフォルトでtest databaeやパスワード無しの匿名ユーザーが設定されています。特に意図がなければ消してしまいましょう。MySQL5.7からは最初の設定のrootパスワード変更時オプションで消えるようになっております。

設定できる範囲であらゆる権限を低くする

例えばmysqlディレクトリですが、こちらもrootユーザーやmysqlユーザー以外には入れないようにしましょう。

ディレクトリやファイルの権限を弱くしましょう。

またshow databasesは簡単に全データベースの情報を与えてしまうコマンドなのでできればセーブしましょう。下記で使えなくすることが可能です。

他にもありますが、とりあえずこれぐらいで。

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

JPQLでの算術関数

複雑なJPQLを書いていると、通常のレコードの取り出しだけではなく、合計(SUM)や算出(COUNT)などのいわゆる算術関数を使うことが一般的です。 JPQLでもこれらを通常通り扱うことができます。 …

no image

laravelのmigrationに関して

DBのカラムの保守などをする場合のmigrationに関して。 ポツポツ使っていたのですが、しっかりまとめてなかったのでここでまとめて見ようかと思います。 Contents1 カラム定義2 実際の実行 …

no image

SQL問題

今までやったSQL問題などのまとめ。定期的にやる予定です・・ 自分用なのでテーブルデータとかあったりなかったりいい加減です(汗) SQLドリル 問題1 nameとageで構成されたテーブルがあるとして …

no image

HAVING句について

本日はHAVINGについて。 かろうじて用法はしっており、たまに使うこともありますが、あまりしっかり理解しているとはいえない状況ですので、掘り下げてみようと思います。 WHEREとは違い、抽出した結果 …

no image

SQLの高速化について&explain

本日はSQLの高速化について。 高速化といってもさまざまなテクがあると思うのですが、代表的な考え方に関して。 Contents1 高速化に関して1.1 index1.2 ディスクアクセスを減らす1.3 …