環境
インストールを行った環境は、以下の通りです。
- OS:CentOS 6.8
インストールするものは、以下です。
- MySQL 5.7.16
MySQLのインストール
インストールパターン
MySQLのインストールには、
という3パターンがあります。
個人的には、2. バイナリtar-ballでインストールするほうがバージョンアップなどの際に対応しやすい気がしているので、今回はこの方法でインストールします。
ダウンロード
MySQLのサイト(http://dev.mysql.com/downloads/mysql/#downloads)から、インストールファイルをダウンロードしてきます。
インストール先のOSはCentOSなので、Linux用のパッケージファイルをダウンロードしましょう。 「Linux - Generic (glibc 2.5) (x86, 64-bit), Compressed TAR Archive」は全部入りのアーカイブですので、ひとまずこれをダウンロードしておきます。
ダウンロードしたファイル「mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz」は、CentOSへ転送しておきましょう。
ちなみに、wgetでもダウンロードはできます。
[bash]
cd /usr/local/src
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz
[/bash]
グループとユーザの作成
MySQLをインストールする前に、まずはmysqlグループとmysqlユーザを作成しておきます。 以下のように作成しました。
[bash]
groupadd mysql
useradd -r -g mysql mysql
grep mysql /etc/group
mysql:x:501:
grep mysql /etc/passwd
mysql:x:501:501::/home/mysql:/bin/bash [/bash]
グループIDとユーザIDは仮に 501 としていますが、環境に合わせて指定してください。
ファイルの展開
ダウンロードしたバイナリファイルを展開します。 インストール先は「/usr/local」とするので、ファイルを/usr/localへ移動させてから展開し、シンボリックリンク「/usr/local/mysql」を作成します。
[bash]
cp -ip /usr/local/src/mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz /usr/local
cd /usr/local
tar zxvf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz
ln -s /usr/local/mysql-5.7.16-linux-glibc2.5-x86_64 mysql
[/bash]
初期設定
続いて、「mysql-files」ディレクトリを作成して、所有グループ・ユーザを変更します。
[bash]
cd mysql
mkdir mysql-files
mkdir data
chown 755 mysql-files
chown 755 data
chown -R mysql .
chgrp -R mysql .
[/bash]
初期インストールスクリプトを実行します。
[bash]
bin/mysqld --initialize --user=mysql
2016-10-20T09:37:48.387857Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2016-10-20T09:37:49.327042Z 0 [Warning] InnoDB: New log files created, LSN=45790 2016-10-20T09:37:49.492243Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2016-10-20T09:37:49.684684Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: dd89cc6e-96a8-11e6-a7b8-9ca3ba01cb37. 2016-10-20T09:37:49.686001Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2016-10-20T09:37:49.689250Z 1 [Note] A temporary password is generated for root@localhost: Wu/3NDjh&koB [/bash]
この時、「[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option」というWarningメッセージが出力されました。
これは「timestamp 型の暗黙的なデフォルト値は推奨しないよ」というメッセージで、MySQL 5.6 からの仕様のようです。 以下のサイトを参考にさせていただきました。 http://www.mk-mode.com/octopress/2013/05/31/mysql-5-6-timestamp-default-warning/ http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_explicit_defaults_for_timestamp
他にもWarningメッセージがいくつか出力されていますが、これはおいおい調べてみようと思います。
最後にnoteメッセージ(「[Note] A temporary password is generated for root@localhost」の部分)として、MySQLのrootユーザの初期パスワードが出力されていますね。 これは、メモしておきましょう。
続いて、SSL関連のセットアップです。
[bash]
bin/mysql_ssl_rsa_setup
Generating a 2048 bit RSA private key .+++ ..........................+++
writing new private key to 'ca-key.pem'
Generating a 2048 bit RSA private key .......................................+++ ...................+++
writing new private key to 'server-key.pem'
Generating a 2048 bit RSA private key ...................+++ ............................................................................................................+++
writing new private key to 'client-key.pem'
[/bash]
こちらは、エラーもなく終了です。
最後に、ディレクトリとファイルの所有ユーザを変更しておきます。
[bash]
chown -R root .
chown -R mysql data mysql-files
[/bash]
共有ライブラリの設定
インストール後、MySQLの共有ライブラリを利用できるように、パスを追加しておきます。
/etc/ld.so.confを以下のように修正します。
[bash]
cat "/usr/local/mysql/lib/" >> /etc/ld.so.conf
cat /etc/ld.so.conf
※末尾に「/usr/local/net-snmp/lib/」が追記されていればOK [/bash]
ld.so.confを修正したら、ldconfigコマンドで再読み込みさせておきます。
[bash]
ldconfig
[/bash]
MySQLの起動
起動スクリプトの準備と自動起動設定
続いて、MySQLの起動スクリプトを準備します。 バイナリtar-ballには起動スクリプトが用意されているので、それを使います。
[bash]
pwd
/usr/local/mysql
cp -i support-files/mysql.server /etc/init.d/mysql
chkconfig --list | grep mysql
(なにも表示されない)
chkconfig mysql on
chkconfig --list | grep mysql
mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off [/bash]
設定ファイルの作成
ひとまず、最低限の設定を書いておきます。
設定ファイルは「my.cnf」ですが、どこに配置すればいいかをヘルプで確認してみると、以下のような記述がありました。
Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
/etc/my.cnf → /etc/mysql/my.cnf → /usr/local/mysql/etc/my.cnf → ~/.my.cnf という順番で探していくようですね。 一般的には /etc/my.cnf が多いのかなと思いますので、/etc/my.cnf にしました。
ひとまず、以下の感じでどうかなと思いますが、必要に応じて適宜書き換えてください。
[bash] [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
[client] socket=/var/lib/mysql/mysql.sock [/bash]
起動!
では、起動させてみましょう。 起動スクリプトを使った起動・停止ですので、serviceコマンドで操作できます。
[bash]
service mysql start
Starting MySQL. SUCCESS!
ps -ef | grep mysql
root 1074 1 0 21:49 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/xxxxx.pid mysql 1252 1074 1 21:49 pts/0 00:00:04 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/var/lib/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/lib/mysql/xxxxx.pid --socket=/var/lib/mysql/mysql.sock [/bash]
無事に起動しました。 続いて、初期設定を行っていきます。