インストール

環境

インストールを行った環境は、以下の通りです。

インストールするものは、以下です。

 

MySQLのインストール

インストールパターン

MySQLのインストールには、

  1. ソースファイルからコンパイルしてインストール
  2. バイナリtar-ballからインストール
  3. 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でもダウンロードはできます。

[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]

無事に起動しました。 続いて、初期設定を行っていきます。

http://tech-wiki.pomme-verte.net/?p=160