環境
インストールを行った環境は、以下の通りです。
- OS:CentOS 6.8
インストールするものは、以下です。
- MySQL 5.7.16
MySQLのインストール
インストールパターン
MySQLのインストールには、
- ソースファイルからコンパイルしてインストール
- バイナリtar-ballからインストール
- rpmでインストール
という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でもダウンロードはできます。
# 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
グループとユーザの作成
MySQLをインストールする前に、まずはmysqlグループとmysqlユーザを作成しておきます。
以下のように作成しました。
# 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
グループIDとユーザIDは仮に 501 としていますが、環境に合わせて指定してください。
ファイルの展開
ダウンロードしたバイナリファイルを展開します。
インストール先は「/usr/local」とするので、ファイルを/usr/localへ移動させてから展開し、シンボリックリンク「/usr/local/mysql」を作成します。
# 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
初期設定
続いて、「mysql-files」ディレクトリを作成して、所有グループ・ユーザを変更します。
# cd mysql # mkdir mysql-files # mkdir data # chown 755 mysql-files # chown 755 data # chown -R mysql . # chgrp -R mysql .
初期インストールスクリプトを実行します。
# 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
この時、「[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option」というWarningメッセージが出力されました。
これは「timestamp 型の暗黙的なデフォルト値は推奨しないよ」というメッセージで、MySQL 5.6 からの仕様のようです。
以下のサイトを参考にさせていただきました。
他にもWarningメッセージがいくつか出力されていますが、これはおいおい調べてみようと思います。
最後にnoteメッセージ(「[Note] A temporary password is generated for root@localhost」の部分)として、MySQLのrootユーザの初期パスワードが出力されていますね。
これは、メモしておきましょう。
続いて、SSL関連のセットアップです。
# 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' -----
こちらは、エラーもなく終了です。
最後に、ディレクトリとファイルの所有ユーザを変更しておきます。
# chown -R root . # chown -R mysql data mysql-files
共有ライブラリの設定
インストール後、MySQLの共有ライブラリを利用できるように、パスを追加しておきます。
/etc/ld.so.confを以下のように修正します。
# cat "/usr/local/mysql/lib/" >> /etc/ld.so.conf # cat /etc/ld.so.conf ※末尾に「/usr/local/net-snmp/lib/」が追記されていればOK
ld.so.confを修正したら、ldconfigコマンドで再読み込みさせておきます。
# ldconfig
MySQLの起動
起動スクリプトの準備と自動起動設定
続いて、MySQLの起動スクリプトを準備します。
バイナリtar-ballには起動スクリプトが用意されているので、それを使います。
# 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
設定ファイルの作成
ひとまず、最低限の設定を書いておきます。
設定ファイルは「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 にしました。
ひとまず、以下の感じでどうかなと思いますが、必要に応じて適宜書き換えてください。
[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
起動!
では、起動させてみましょう。
起動スクリプトを使った起動・停止ですので、serviceコマンドで操作できます。
# 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
無事に起動しました。
続いて、初期設定を行っていきます。