̃Gg[͂ĂȃubN}[Nɒlj

MySQL :: MySQL5.7のインストールと設定



MySQL5.7から実装された「マルチソースレプリケーション」を使いたいため、同バージョンをインストールします。
なお、インストール先のサーバーはすでにMySQL5.5が稼働しているため、複数のMySQLをインストールして運用する前提となります。

関連リンク: マルチソースレプリケーションの設定

MySQL5.7のインストール

  • OS確認
% less /etc/redhat-release  
CentOS release 6.5 (Final)
  • アーキテクチャ確認
% arch
x86_64
  • OS, アーキテクチャに合わせて、tarをダウンロード
% cd ~/sysad
% wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
  • 展開
% tar -xvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz

今回は下記のパスに配置します。

/usr/local/mysql-5.7.29
  • 移動とオーナー変更
% sudo su
# mv /path/to/mysql-5.7.29/mysql-5.7.29-linux-glibc2.12-x86_64 /usr/local/mysql-5.7.29
# chown -R mysql:mysql /usr/local/mysql-5.7.29
  • data ディレクトリの作成
# cd /usr/local/mysql-5.7.29
# mkdir data && chown mysql:mysql data
  • mysqlの初期化
    • エラーを回避するため、まずは「/var/log/mysqld_5.7.29.log」を touch し、オーナーを mysql に変更しておく
# touch /var/log/mysqld_5.7.29.log && chown mysql:mysql /var/log/mysqld_5.7.29.log
  • 初期化
# /usr/local/mysql-5.7.29/bin/mysqld --initialize --basedir=/usr/local/mysql-5.7.29 --datadir=/usr/local/mysql-5.7.29/data --log-error=/var/log/mysqld_5.7.29.log
  • my.cnf の設置
    • 環境に合わせて、適宜書き換えてください
[client]
#password       = your_password
port            = 3326
socket          = /tmp/mysql-5.7.29.sock

[mysqld]
port            = 3326
socket          = /tmp/mysql-5.7.29.sock
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 128K

# password_lifetime : nolimit
default_password_lifetime = 0

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
log-error=/var/log/mysqld_5.7.29.log
  • mysql 起動
% sudo su
# /usr/local/mysql-5.7.29/bin/mysqld_safe --datadir=/usr/local/mysql-5.7.29/data --pid-file=/usr/local/mysql-5.7.29/data/tz003.pid &
  • 起動確認
% ps auxwww | grep mysql | grep 5.7
root      7362  0.0  0.1 106228  1424 pts/2    S    14:17   0:00 /bin/sh /usr/local/mysql-5.7.29/bin/mysqld_safe --datadir=/usr/local/mysql-5.7.29/data --pid-file=/usr/local/mysql-5.7.29/data/tz003.pid
mysql     7767  0.2 11.9 1047812 122308 pts/2  Sl   14:17   0:00 /usr/local/mysql-5.7.29/bin/mysqld --basedir=/usr/local/mysql-5.7.29 --datadir=/usr/local/mysql-5.7.29/data --plugin-dir=/usr/local/mysql 5.7.29/lib/plugin --user=mysql --log-error=/var/log/mysqld_5.7.29.log --pid-file=/usr/local/mysql-5.7.29/data/tz003.pid --socket=/tmp/mysql-5.7.29.sock --port=3326

次にmysqlに接続しますが、まずはmysqlのrootのパスワードをメモしておきます。
パスワードは以下のログファイルに記載されています。

# less /var/log/mysqld_5.7.29.log

  :

2020-03-30T05:01:49.577109Z 1 [Note] A temporary password is generated for root@localhost: <password>

  :

さっそく先程メモしたパスワードでログインを試みますが、以下のエラー(パスワードの有効期限切れ)で接続できないときは、

ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords.

オプション「–connect-expired-password」にて、有効期限切れのパスワードでも接続可能な指定を行い、接続します。
※ このとき、Linuxのユーザーは root である必要があります。

# /usr/local/mysql-5.7.29/bin/mysql -p --connect-expired-password --socket=/tmp/mysql-5.7.29.sock
Enter password: ← ここで先程メモしたパスワードを入力します。
<code>

無事、ログインできたら、mysqlのrootのパスワードを変更しておきましょう。\\

<code>
mysql> set password for root@localhost=password('<PASSWORD>');
重要

MySQL5.7 からユーザーのパスワードの有効期限がデフォルトで360日になったようです。
有効期限を無制限にするには、my.cnf の [mysqld] セクションにて、以下の設定「default_password_lifetime = 0」を記述しておきます。
設定後は mysql の再起動を忘れずに。

  • /usr/local/mysql-5.7.29/my.cnf
[mysqld]

  :

default_password_lifetime = 0
  • mysqlのrootでログイン
% mysql -uroot -p --socket=/tmp/mysql-5.7.29.sock

起動スクリプトの設置

必要であれば、以下の「mysql.server」をコピーして、/etc/init.d/ 配下に起動スクリプトを設置します。

/usr/local/mysql-5.7.29/support-files/mysql.server
  • コピー
# cp /usr/local/mysql-5.7.29/support-files/mysql.server /etc/init.d/mysqld-5.7.29
  • 起動スクリプトを適宜書き換えます
vi /etc/init.d/mysqld-5.7.29
  • 今回は以下を変更
# diff /usr/local/mysql-5.7.29/support-files/mysql.server /etc/init.d/mysqld-5.7.29
58c58
< lock_file_path="$lockdir/mysql"
---
> lock_file_path="$lockdir/mysql-5.7.29"
66,67c66,67
<   basedir=/usr/local/mysql
<   bindir=/usr/local/mysql/bin
---
>   basedir=/usr/local/mysql-5.7.29
>   bindir=/usr/local/mysql-5.7.29/bin
70c70
<     datadir=/usr/local/mysql/data
---
>     datadir=/usr/local/mysql-5.7.29/data
72,73c72,73
<   sbindir=/usr/local/mysql/bin
<   libexecdir=/usr/local/mysql/bin
---
>   sbindir=/usr/local/mysql-5.7.29/bin
>   libexecdir=/usr/local/mysql-5.7.29/bin

起動スクリプト経由での起動と終了

  • 終了
# /etc/init.d/mysqld-5.7.29 stop
Shutting down MySQL.... SUCCESS!
  • 起動
# /etc/init.d/mysqld-5.7.29 start
Starting MySQL. SUCCESS! 

自動起動の設定

  • 設定
# chkconfig mysqld-5.7.29 on
  • 確認
# chkconfig --list | grep mysql
mysqld-5.7.29   0:off   1:off   2:on    3:on    4:on    5:on    6:off





database/mysql/install57.txt