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

MySQLのレプリケーションについて

MySQLのレプリケーションについて調べたことなどを。 Contents1 レプリケーションの基礎知識1.1 定義1.2 構成1.3 メリット1.3.1 参照性能の向上1.3.2 可用性の向上1.4 …

no image

CakePHPでの数字カンマ区切り&PHP&MySQL曜日の出力

今回は主に時間やお金の表示など、出力に関するネタです。 Contents1 Cakeでのカンマ区切り1.1 単純なカンマ区切り 例1,0001.2 \をつけるケース 例 \1,0001.3 円をつける …

no image

CASE+HAVING句

今回はCASEとHAVINGを組み合わせて、そこそこの難問を解いていきます。 まず下記のようなテーブル(testresults)があるとします。 student | class | sex | sco …

no image

SQLのチューニングに関して

ここ2か月ぐらいはSQLの本でがりがり勉強してきましたね。当然復習も必要かと思いますが、だいぶいろんなことを覚えたなあという気がします。 一番勉強になった本はもちろん「達人に学ぶ SQL徹底指南書」と …

no image

外部結合 応用編2

引き続き結合についてです。 Contents1 1対Nの結合に関して2 完全外部結合3 差集合(class_aだけに存在するものとclass_bだけに存在するもの)3.1 class_aのみ3.2 c …

アーカイブ