MySQL5.5のインストール

MySQL5.5をインストールします。
単にyumで「mysql-server」をインストールしようとすると、MySQL5.1がインストールされてしまうので、ここでは、yumのリポジトリの追加登録方法(CentOS 6)で「remi」のリポジトリを追加して、MySQLの5.5をインストールします。

1. インストール

リポジトリ「remi」を指定して、yumでインストールします。

# yum --enablerepo=remi install mysql-server

2. MySQLのmy.cnfの設定について

MySQLの設定は、「/etc/my.cnf」で行います。

(1) my.cnfのひな型のコピー
初期値の「/etc/my.cnf」が用意されていますが、このファイルは使用しません。
ですから、リネームしておきます。
# mv /etc/my.cnf /etc/my.cnf.default

さて、my.cnfのひな型が「/usr/share/mysql」にあります。
以下のように5種類あり、システムの規模によって選択します。
  • my-small.cnf
  • my-medium.cnf
  • my-large.cnf
  • my-huge.cnf
  • my-innodb-heavy-4G.cnf

ここでは、「my-medium.cnf」を使用することを前提にします。

このファイルを「/etc/my.cnf」としてコピーします。
# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

(2) my.cnfの編集
「/etc/my.cnf」を編集します。
# vi /etc/my.cnf

■ InnoDBの使用
初期値はInnoDBが使用不可となっていますので、使用する場合には行頭の「#」を削除します。

【書き換え前】
# The MySQL server
[mysqld]
・・・(途中省略)・・・
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /var/lib/mysql/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_log_arch_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 = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

【書き換え後】
# The MySQL server
[mysqld]
・・・(途中省略)・・・
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /var/lib/mysql/
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql/
innodb_log_arch_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 = 16M
innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

※※※※「innodb_log_file_size」をコメント解除する場合の注意点※※※※

「/var/lib/mysql」ディレクトリに
・ib_logfile0
・ib_logfile1
が既に存在する場合に、これらのファイルサイズが「innodb_log_file_size」で指定したファイルサイズの範囲外の値となっていることがあります。
その場合には、mysqldのログファイルに「InnoDB: Error: log file /var/lib/mysql/ib_logfile0 is of different size 0 5242880 bytes」というように記録され、InnoDBエンジンにエラーが発生して、InnoDBが無効になってしまうケースがあります。
この場合には、既存の「ib_logfile0」「ib_logfile1」を削除して、MySQLを再起動して下さい。
新しいログファイルが作成されます。

また、InnoDBをデフォルトストレージエンジンにしたい場合は、以下のように記述します。
[mysqld]
・・・(途中省略)・・・
default-storage-engine=InnoDB

■ PHPの日本語文字化け対策
MySQL4.1以降、PHPからアクセスすると文字化けすることが多くなってきたので、文字化け対策を行います。
これは、[mysqld]の項目に、1行「skip-character-set-client-handshake」を追加すればOKです。
# The MySQL server
[mysqld]
・・・(途中省略)・・・
character-set-server=utf8
skip-character-set-client-handshake
※バージョンが5.0、5.1の場合は「character-set-server」ではなく「default-character-set=utf8」となるので注意!

■ バイナリログの自動削除
バイナリログは、実行したSQL文が記録されており、障害発生時の調査や障害復旧時に必要なものです。
ただし、このバイナリログは容量が大きく、サーバのHDDの容量を圧迫する原因ともなり、また自動で削除されません。
そこで、自動削除するためのオプションを追加します。

【書き換え前】
# The MySQL server
[mysqld]
・・・(途中省略)・・・
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin

【書き換え後】
# The MySQL server
[mysqld]
・・・(途中省略)・・・
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
expire_logs_days = 30

「expire_logs_days」では、バイナリログを自動削除する日数を指定します。
デフォルトは「0」で自動削除しません。
なお、ログを削除するタイミングは、MySQLサーバの起動時、もしくはログローテート時となりますので、指定の日数を超えても直ぐに削除されるとは限りません。

■max_allowed_packet値の変更
「max_allowed_packet」は、クライアントからサーバへパケットを送ることのできる最大のデータサイズを指定します。
デフォルトでは1MBなので、ある程度大きなデータを送ろうとすると、
MySQL Error[2006] : MySQL server has gone away
のようなエラーが発生することがあります。
そこでこの値を大きくします。

【書き換え前】
max_allowed_packet=1M

【書き換え後】
max_allowed_packet=16M

(4) DBの初期化

初期DBの作成を行います。
# mysql_install_db --datadir=/var/lib/mysql --user=mysql

(4) MySQLの起動
設定が完了したら、MySQLのサービスを起動します。
# /sbin/service mysqld start

(5) 自動起動設定
サーバを再起動した場合に自動的にサービスが起動するようにします。
# cd /etc/init.d
# chkconfig mysqld on

(6) mysql_secure_installationの実行
MySQLのセキュリティを向上させるために「mysql_secure_installation」を実行します。
# /usr/bin/mysql_secure_installation
このコマンドは、
  • rootユーザのパスワード文字列を設定する
  • anonymousユーザを削除する
  • リモートからのrootログインを禁止する
  • TESTデータベースを削除する
  • 権限を再読み出しする
という作業を対話式に順次実行します。

3. rootパスワードの設定

インストール直後のMySQLは「root」ユーザにパスワードが設定されていないので、パスワードを設定します。
※前述の「mysql_secure_installation」を実行した場合には不要です。

MySQLにログインします。
# mysql -u root

パスワードを設定します。
mysql> SET PASSWORD FOR root@localhost=PASSWORD('xxxxxx');
mysql> exit;

パスワードなしでログインしてエラーが発生することを確認します。
# mysql -u root

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

設定したパスワードでログインできることを確認します。
# mysql -u root -p

パスワードを入力します。
Enter password:

ログインできればOKです。



最終更新:2015年09月10日 10:20