2011年8月2日火曜日

Amazon EC2 (Amazon Linux) での MySQL インストールと設定

Amazon EC2に LAMP環境、Postfix+Dovecot によるメール環境を構築する方法をシリーズ化して書いていきたいと思いますが、今回はその第一弾で、MySQLサーバー(ver 5.1.52) のインストールと設定です。

使用したインスタンスのイメージは、『Basic 32-bit Amazon Linux AMI 2011.02.1 Beta (AMI Id: ami-300ca731)』です。

管理者権限になる

インストールと設定は管理者権限で行いますので権限を取ります。
$sudo su -

MySQLのインストールと設定ファイルの編集

yumを使って MySQLサーバーをインストールします。
#yum -y install mysql-server

次に設定ファイルを編集します。インストール時に /etc/my.cnf が設定ファイルとして作成されますが、ほとんど何も設定がされていない状態ですので、環境別のデフォルトファイルをコピーして使います。

まず、環境別のファイルを探します。

#find / -name my-*.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-huge.cnf
/usr/share/mysql/my-small.cnf


それぞれの設定ファイルは、次の環境を想定した設定がされています。
my-small.cnf
64Mバイト以下のメモリがあり、MySQLが頻繁に稼働せず使用リソースも少ないサーバー
my-medium.cnf
32M ~64MバイトのメモリのあるMySQL専用サーバーか、128Mバイトがあり、(Webサーバーのような)他のプログラムも稼働しているサーバー
my-large.cnf
512Mバイト程度のメモリがあり、主にMySQLが稼働するサーバー
my-huge.cnf
1G ~2Gバイトのメモリがあり、主にMySQLが稼働するサーバー
my-innodb-heavy-4G.cnf
4Gバイトのメモリがあり、InnoDBのみを使用しているMySQLが主に稼働しており、複雑なクエリーが少ない接続先から実行されるサーバー

インスタンス・タイプに合った設定ファイルを /etc/my.cnf にコピーします。

#cp /usr/share/mysql/my-medium.cnf /etc/my.cnf


文字コードの設定ですが、今回はutf8を使用しています。my.cnfの関連箇所を修正します。MySQL5.5では[mysqld]セクションのdefault-character-setがcharacter-set-serverに変更になっています。旧名では起動時にエラーになりますので注意してください。また、skip-character-set-client-handshakeからexpire_logs_daysまでは任意です。innodb_data_file_pathが原因で起動しない場合がありますので、/var/lib/mysql/にあるibdata1, ib_logfile0, ib_logfile1を削除して試してください。

[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
innodb_data_file_path=ibdata1:1G
innodb_file_per_table
expire_logs_days=30

[mysql]
default-character-set = binary

[mysqldump]
default-character-set = binary


MySQLを起動します。次回以降自動起動させるための設定も合わせて行います。

#service mysqld start
#chkconfig mysqld on


MySQL用のユーザーを設定

rootユーザーのパスワードを設定します。
#/usr/bin/mysqladmin -u root password '********'


MySQLにログインして、ユーザー mysql を作成します。********にはパスワードを入力してください。

#mysql -u root -p********
>GRANT ALL PRIVILEGES ON *.* TO mysql@localhost IDENTIFIED BY '********' WITH GRANT OPTION;
>GRANT ALL PRIVILEGES ON *.* TO mysql@'%' IDENTIFIED BY '********' WITH GRANT OPTION;


匿名ユーザー、パスワードが設定されていないユーザーを削除します。最後に権限の再読み込みを行っています。

>use mysql;
>delete from user where user='';
>delete from user where password='';
>flush privileges;

これでMySQLのインストールは完了です。今回は基本的な設定のみになっていますので、チューニングやレプリケーションについても別の機会になりますが書きたいと思っています。



Related Posts Plugin for WordPress, Blogger...