「ApacheでPHPを動かす」の続きの記事、今回はMySQLをインストールします。使用用途はサーバーの公開ではなく、Apache経由で公開するWebアプリのDBとしてインストールします。(公開する・・・というのは本サイトでは仮定の話です)
MySQLのインストール
まずは、MySQLのインストールを行います。管理者権限に入って以下のコマンドでインストールを行います。
# yum install mysql-server
サービスの起動と自動起動設定
サービスの起動には以下のコマンドを実行します。
# service mysqld start
次はMySQLを自動起動サービスとして設定します。
# chkconfig --level 35 mysqld on
設定自体は一瞬で終わるので、リストで変更されたか確認します。
# chkconfig --list mysqld httpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
上記のように3,5が「on」に変化していれば成功です。
データベースの設定
まずは、デフォルトのエンジンをInnoDBに変更します。
※デフォルトで設定されているのはMyISAMですが、トランザクションが使えないためInnoDBにします。
yumでインストールを行うとデフォルトで「/etc/my.cnf」に設定ファイルが作られています。
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
このファイルは「/etc/my_backup.cnf」へ そのままバックアップを取っておきます。
mysqlには環境別に合わせて用意された設定ファイルのサンプルが「/usr/share/mysql/」以下にmy-~~.cnfというファイル名であります。
各ファイルは以下のような用途として用意されています。
my-small.cnf | ~64MBのメモリしかない環境向け |
my-medium.cnf | ~128MB程度のメモリの環境向け |
my-large.cnf | ~512MBのメモリの環境向け |
my-huge.cnf | ~2Gのメモリが用意できる環境向け |
my-innodb-heavy-4g.cnf | 4Gのメモリがあり、InnoDBのエンジンのみを使う場合向け |
自分の環境にあったファイルを選択し、それをベースにmysqlの設定を行います。
今回は、my-huge.cnf をベースに設定ファイルの変更を行います。
# mv /etc/my.cnf /etc/my_backup.cnf # cp /usr/share/mysql/my-huge.cnf /etc/my.cnf # vi /etc/my.cnf
変更内容は抜粋の形で書きます。
※以下の設定ファイルの内容では[ ]を全角文字で表現していますが、実際の環境に適用する場合は半角文字を使用してください。
・・・(略)・・・ # The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 sokcet = /var/lib/mysql/mysql.sock default-character-set = utf8 ・・・・・・ (1) ・・・(略)・・・ # The MySQL server [mysqld] ・・・(略)・・・ thread_concurrency = 8 character-set-server = utf8 ・・・・・・ (2) default-storage-engine = InnoDB ・・・・・・ (3) user = mysql ・・・・・・ (4) datadir = /var/lib/mysql ・・・・・・ (5) [mysqld_safe] log-error=/var/log/mysqld.log ・・・・・・ (6) pid-file=/var/run/mysqld/mysqld.pid ・・・・・・ (7) ・・・(略)・・・ # Uncomment the following if you are using InnoDB tables innodb_data_home_dir = /var/lib/mysql ・・・・・・ (8) innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend innodb_log_group_home_dir = /var/lib/mysql # You can set .._buffer_pool_size up to 50 - 80% # of RAM but beware of setting memory usage too high innodb_buffer_pool_size = 384M innodb_additional_mem_pool_size = 20M # Set .._log_file_size to 25 % of buffer pool size innodb_log_file_size = 100M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50
(1),(2) 文字設定をUTF-8に設定します。
(3) デフォルトのストレージエンジンをInnoDBに設定します。
(MySQL5.5以降はInnoDBが標準のデータベースになっているようですので、この記述は不要です)
(4) ~ (7) 私の環境では、この内容を記述する必要がありました。基本的には、先にバックアップを取っておいた「/etc/my_backup.cnf」の内容をコピーしたものです。(記述が必要になったのは先にmysqldを起動させてしまったせいかもしれません。)
(8) ここから以下はサンプルに書かれていた内容のコメントアウトを外しただけになります。
サービスの再起動
サービスの再起動を行います。
※私は、この時点でのmysqldの再起動に失敗したため、my.cnfに(4)~(7)の設定を記述してから実行することで状況が改善されました。
# service mysqld restart
MySQLの初期設定
管理ユーザー(root)のパスワードの設定などを行います。
# mysql_secure_installation Enter current password for root (enter for none): <何も入力しないでEnter> OK, successfully used password, moving on... ・・・(略)・・・ Change the root password? [Y/n] Y ・・・・・・ (9) New password: <パスワードを入力> Re-enter new password: <パスワードをもう一度入力> Password updated successfully! Reloading privilege tables.. ... Success! ・・・(略)・・・ Remove anonymous users? [Y/n] Y ・・・・・・ (10) ... Success! ・・・(略)・・・ Disallow root login remotely? Y ・・・・・・ (11) ... Success! ・・・(略)・・・ Remove test database and access to it? [Y/n] Y ・・・・・・ (12) - Dropping test database... ... Success! ・・・(略)・・・ Reload privilege tables now? [Y/n] Y ・・・・・・ (13) ... Success! Cleaning up... All done! If you've completed all of the above steps, your MySQL installation should now be secure. Thanks for using MySQL!
(9) MySQLのrootのパスワードを変更するかどうか。今回は変更するために「Y」を入力。
(10) 初期状態で用意されている匿名ユーザーを削除するかどうか。今回は削除するために「Y」を入力。残したい場合は「n」を入力。
(11) リモートでのrootログインを禁止するかどうか。禁止する場合は「Y」を入力。ログインを可能にする場合は「n」を入力。
(12) 初期状態で用意されているテスト用データベースを削除するかどうか。削除する場合は「Y」を入力。残しておく場合は「n」を入力。
(13) 権限テーブルのリロードを行うかどうか。リロードする場合は「Y」を入力。
以上でMySQLのセットアップは完了。
接続の確認
MySQLが動作しているかテストします。
# mysql -u root -p ・・・・・・ (14) Enter password: <パスワードを入力> Welcome to the MySQL monitor. Commands end with ; or \g. ・・・(略)・・・ mysql> exit Bye
(14) mysqlへユーザーrootでパスワードを使って接続する。
(-u:ユーザーの指定、-p:パスワード入力による接続)
mysql> が表示されたら成功です。
SQL文の入力を行うことでデータベースの管理が可能です。
特に行うことが無ければ「exit」で接続を解除します。
【番外編】MySQLサーバーを外部公開する
ポートを開く必要があります。ファイアーウォールの設定を行います。
ポートはmy.cnfで設定したポート番号を指定します。(デフォルトは3306)
変更するファイルは「/etc/sysconfig/iptables」です。
# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
トラックバック & ピンバック