Webアプリケーションスタックのセキュリティの向上(LAMP仮想化、ステップ2/6)

Linux:MySQLデータベースサーバーのセットアップ



シリーズの2番目の実践的なレッスンに進み、専用サーバーの仮想環境のセットアップについてお話ししましょう。MySQL/ PostgreSQLデータベースへのアクセスを保存および維持するためのノード(VM)を準備します。



このインストールでは、MySQLデータベースサーバーを使用します。 このチュートリアルのすべての設定は、 vm04でIPアドレス192.168.1.13でのみ行われます



MySQLサーバーをインストールする



次のyum managerコマンドを入力して、MySQLデータベースサーバーをRHEL / CentOS Linuxシステムにインストールします



# yum install mysql mysql-server
      
      





MySQLサーバーのセットアップ

ファイル/etc/my.cnfを編集します。



 # vi /etc/my.cnf
      
      





MySQLサーバーが、Apache + php5がインストールされたvm01およびvm02仮想マシンからアクセス可能であることを確認してください。 [mysqld]セクションを見つけ、次のパラメーターを追加/修正して、 mysqldデータベースサービスにリモートでアクセスできるようにします



 # ,   skip-networking  ( ) # skip-networking #    bind-address=192.168.1.13
      
      







MySQLサーバーのパラメーターの最適化

MySQLサーバーを最適化する必要があります。最適化しないと、 vm04仮想マシンのリソースのかなりの部分を消費します。 次のように設定を追加または修正できます(詳細については、 MySQLのマニュアルを参照してください)。



 ######################################################################## # !!! #     #   mysqld  my.cnf     # ..        #     ######################################################################## #       # symbolic-links symbolic-links=0 ##  ,    , YMMV skip-name-resolve skip-slave-start skip-external-locking #                 # #  ,       # sort_buffer_size           = 2M read_buffer_size           = 2M binlog_cache_size          = 1M wait_timeout               = 200 interactive_timeout        = 300 max_allowed_packet         = 12M thread_stack               = 128K table_cache                = 1024 myisam_sort_buffer_size    = 1M tmp_table_size             = 12M max_heap_table_size        = 12M #  # log_queries_not_using_indexes  = 1 slow_query_log                 = 1 slow_query_log_file            = /var/lib/mysql/slowquery.log #     # tmp_table_size                 = 12M max_heap_table_size            = 12M query_cache_type               = 1 query_cache_limit              = 2M query_cache_size               = 32M max_connections                = 500 thread_cache_size              = 50 open_files_limit               = 65535 table_definition_cache         = 4096 table_open_cache               = 1024 # MyISAM # key_buffer_size                = 32M myisam_recover                 = FORCE,BACKUP #  # max_allowed_packet = 16M max_connect_errors = 1000000 #   # log_bin                        = /var/lib/mysql/mysql-bin expire_logs_days               = 14 sync_binlog                    = 1 # InnoDB # innodb_flush_method            = O_DIRECT innodb_log_files_in_group      = 2 innodb_log_file_size           = 256M innodb_flush_log_at_trx_commit = 1 innodb_file_per_table          = 1 innodb_buffer_pool_size        = 10G
      
      





変更を保存して、ファイルを閉じます。 MySQLサーバーを再起動/再起動します。



 # chkconfig mysqld on # service mysqld start # service mysqld reload # service mysqld restart
      
      





mysqldが TCPポート#3306で実行されていることを確認します。



 # netstat -tulpn | grep :3306
      
      







MySQLデータベースサーバーのファイアウォール構成



ファイアウォール/ etc / sysconfig / iptablesの構成を編集します。



 # vi /etc/sysconfig/iptables
      
      





vm01およびvm02仮想マシンがデータベースサーバーにアクセスできることを確認します。



 ##   mysqld  web- Apache  Lighttpd # -A INPUT -m state --state NEW -s 192.168.1.10 -m tcp -p tcp --dport 3306 -j ACCEPT -A INPUT -m state --state NEW -s 192.168.1.11 -m tcp -p tcp --dport 3306 -j ACCEPT
      
      





ファイルを保存して閉じます。 iptablesサービスを再起動します



 # service iptables restart
      
      







ディスククォータとポートサーバーのポート範囲の増加



ロードされたDBMSサーバーの場合、ファイル記述子の数( FD制限 )を増やし、使用可能なIPポートの数を増やします



 #        fs.file-max = 50000 #     net.ipv4. ip_local_port_range = 2000 65000
      
      





次のsysctlコマンドを入力して変更を有効にします。これにより、指定した設定に基づいてLinuxカーネルのパラメーターが変更されます。



 # sysctl -p
      
      







MySQLデータベースとユーザーアカウントの作成



このセクションでは、MySQLデータベースを手動で作成するための基本的なパラメーターを示しますが、タスクを明確にするために、MySQLデータベースと次のパラメーターを持つユーザー作成します。





次のコマンドを入力して、データベースと必要なユーザーを作成します。



 # /usr/bin/mysql -u root -h localhost -p
      
      





fooという名前のデータベースを作成するには、mysqlターミナルラインに次のコマンドを入力します。



 mysql > CREATE DATABASE foo;
      
      







Apache + php5アプリケーションサーバーがデータベースに接続するbarという名前のMySQLユーザーに、このデータベースへのアクセス権を提供する必要があります。



 mysql > GRANT ALL ON foo.* TO bar@localhost IDENTIFIED BY 'mypassword'; mysql > GRANT ALL ON foo.* TO bar@192.168.1.10 IDENTIFIED BY 'mypassword'; mysql > GRANT ALL ON foo.* TO bar@192.168.1.11 IDENTIFIED BY 'mypassword';
      
      





MySQLコンソールを終了するには、次のコマンドを入力します。



 mysql > quit
      
      





SQLファイルを使用して、テーブルを作成したり、データをロードしたりできるようになりました。 MySQLユーザーとデータベースを追加するシェルまたはPerlスクリプトを記述することにより、この手順を自動化できます



「remote」vm01およびvm02からの新しいデータベースとユーザー設定を確認します



sshを介して仮想ホストvm01またはホストvm03に接続し、次のコマンドを入力してApache / Lighttpd Webサーバーとの接続を確認します。



 $ mysql -u bar -h 192.168.1.13 -p'mypassword' foo
      
      





または:



 $ mysql -u bar -h vm04 -p'mypassword' foo
      
      







PhpMyAdmin



PhpMyAdminは、MySQLデータベースへの有名なWebインターフェイスです。 このサーバー側スクリプトは、単一のブラウザーを使用してMySQLをリモートで管理するために使用されます。 PhpMyAdminは、MySQLサーバー全体と単一のデータベースの両方を管理できます。 このパッケージは、すべての新しいMySQLデータベースユーザーおよび管理者に推奨されます。







翻訳中、およびこの翻訳をさらに聞きたい場合は、投稿の最後に継続するリンクが週に添付されます。



All Articles