第10章 MySQL

MySQL プロジェクトページより抜粋:
原文: "The MySQL® database has become the world's most popular open source database because of its consistent fast performance, high reliability and ease of use. It's used on every continent -- Yes, even Antarctica! -- by individual Web developers as well as many of the world's largest and fastest-growing organizations to save time and money powering their high-volume Web sites, business-critical systems and packaged software -- including industry leaders such as Yahoo!, Alcatel-Lucent, Google, Nokia, YouTube, and Zappos.com." (訳文: 安定した高速パフォーマンス、高い信頼性、 そしてその使いやすさで、 MySQL® データベースは世界でもっともポピュラーなオープンソースのデータベースとなりました。すべての大陸で (南極大陸をも含め!)、web 開発者そして急速な成長を遂げている世界でも有数の企業の多くにより (Yahoo、Alcatel-Lucent、Google、Nokia、YouTube、Zappos.com など) 、時間的、金銭的な効率性を高めながら大量の web サイト、ビジネスに不可欠なシステム、パッケージ化されたソフトウェアなどを供給するために利用されています。)
Red Hat Enterprise Linux では、 MySQL は mysql-server パッケージで提供されます。 rpm -q mysql-server を実行して、 mysql-server パッケージがインストールされているか確認してください。 インストールされていない場合は、 root ユーザーで次のコマンドを実行してインストールを行ないます。
yum install mysql-server

10.1. MySQL と SELinux

MySQL を有効にすると、 デフォルトで制限のあるサービスとして実行されます。 制限のあるプロセスはそれ自体のドメイン内で実行され、 他の制限のあるプロセスとは分離されます。 制限のあるプロセスが攻撃を受けると、 SELinux ポリシー設定に応じて、 攻撃側がリソースにアクセスして加えることができる被害は限定されます。 以下に、 MySQL 自体のドメイン内で実行している MySQL プロセスの例を示します。 ここでは mysql パッケージがインストールされていることを前提としています。
  1. getenforce を実行して、 SELinux が enforcing モードで実行していることを確認します。
    $ getenforce
    Enforcing
    
    SELinux が enforcing モードで実行している場合は、 getenforce コマンドを実行すると Enforcing が返されます。
  2. root ユーザーで service mysqld start を実行し、 mysqld を起動します。
    # service mysqld start
    Initializing MySQL database:  Installing MySQL system tables... [  OK  ]
    Starting MySQL:                                            	[  OK  ]
    
  3. ps -eZ | grep mysqld を実行し、 mysqld プロセスを表示させます。
    $ ps -eZ | grep mysqld
    unconfined_u:system_r:mysqld_safe_t:s0 6035 pts/1 00:00:00 mysqld_safe
    unconfined_u:system_r:mysqld_t:s0 6123 pts/1   00:00:00 mysqld
    
    mysqld プロセスに関連する SELinux コンテキストは unconfined_u:system_r:mysqld_t:s0 です。 コンテキストの最後から 2 番目の部分、 mysqld_t がタイプになります。 プロセスのドメインやファイルのタイプを定義するのがタイプです。 この例の場合、 mysqld プロセスは mysqld_t ドメイン内で実行しています。