MySQL 5.7 インストール手順
[履歴] [最終更新] (2018/09/07 18:50:29)
最近の投稿
注目の記事

概要

2016/11/07 時点、多くの環境では yum レポジトリ等に mysql 5.7 が含まれていません。公式ページからダウンロードしてインストールする手順を二つまとめます。

yum レポジトリを追加する手順

Installing MySQL on Linux Using the MySQL Yum Repository (mysql 5.7) をもとにしています。rpm コマンドや yum レポジトリの追加についてはこちらをご参照ください。

rpm のインストール

Download MySQL Yum Repository から 5.7 (GA) の yum repository rpm をダウンロードします。例えば CentOS 6 であれば Red Hat Enterprise Linux 6 / Oracle Linux 6 (Architecture Independent), RPM Package を選択します。以下のコマンドで yum レポジトリを追加します。

sudo rpm -ivh mysql57-community-release-el6-9.noarch.rpm

レポジトリが追加されたこと、および mysql57-communityenabled=1 となっていることを確認します。

less /etc/yum.repos.d/mysql-community.repo

mysql-server のインストール

yum コマンドで mysql をインストールします。

yum info mysql-community-server
sudo yum install mysql-community-server

既存の他のバージョンの mysql と競合する場合は以下のコマンドで個別に remove してからインストールします。

rpm -qa | grep mysql
sudo yum remove xxx

インストールに成功した後は、設置されたファイルを確認してみましょう。

rpm -ql mysql-community-server | less

mysqld の起動

sudo service mysqld start
sudo service mysqld status

root 初期パスワードの確認

mysql 5.7 では root に初期パスワードが設定されています。ログファイルに記載されているため grep で確認して変更します。

sudo grep 'temporary password' /var/log/mysqld.log

記載されていない場合はログ全体を確認します。

sudo less /var/log/mysqld.log

過去にインストールしていた mysql のデータが残存している場合があります。

grep 'datadir' /etc/my.cnf
sudo ls /var/lib/mysql

そのような場合は datadir を削除してから再度 start します。データが削除されるため実行時は注意してください。

sudo service mysqld stop
sudo su -l
rm -rf /var/lib/mysql/*
exit
sudo service mysqld start
sudo service mysqld status

root パスワードの変更

確認した初期パスワードでログインします。

mysql -uroot -p

以下のコマンドでパスワードを変更します。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

パスワードなしでログインできるようにするためには /etc/my.cnf を編集して再起動します。

sudo vim /etc/my.cnf
skip-grant-tables  ← [mysqld] セクションに追記
sudo service mysqld restart

セキュリティ上の観点から好ましくない状況もありそうですが、初期パスワード変更後の root ユーザーでプラグインをアンインストールすることでもパスワードなしログインを実現できます。

UNINSTALL PLUGIN validate_password;
SET PASSWORD = '';

パスワードが失効しない設定であることを確認

mysql 5.7 には、一定期間が経過するとパスワードを失効させてログインできなくする機能があります。不要な場合は、以下のコマンド結果が 0 であることを確認して無効になっていることを確認します。

select @@default_password_lifetime;

apt レポジトリを追加する手順

Debian9 の場合は以下のようにします

wget https://dev.mysql.com/get/mysql-apt-config_0.8.10-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb
sudo apt update
sudo apt install mysql-community-server
sudo apt install mysql-community-client
sudo apt install libmysqlclient-dev

ビルド済みのバイナリを tar.gz でダウンロードする手順

Installing MySQL on Unix/Linux Using Generic Binaries (mysql 5.7) をもとにしています。

tar.gz ファイルのダウンロードおよび解凍

Download MySQL Community Server から Linux - GenericCompressed TAR Archive をダウンロードして /usr/local/ に解凍します。以下は 64bit 版の例です。

sudo mv mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz /usr/local/
sudo su -l
cd /usr/local/
tar zxvf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz

mysql ユーザーの作成

sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql

ファイル権限を mysql ユーザーに設定

sudo su -l
cd /usr/local/
ln -s /usr/local/mysql-5.7.16-linux-glibc2.5-x86_64 ./mysql
cd mysql/
mkdir mysql-files
chmod 750 mysql-files
chown -R mysql .
chgrp -R mysql .

datadir の初期化

例えば datadir を /data/mysql にしたい場合は以下のコマンドを実行します。root ユーザーの初期パスワードが表示されますのでメモしておきましょう。

sudo mkdir -p /data/mysql
sudo /usr/local/mysql/bin/mysqld --no-defaults --initialize --user=mysql --datadir=/data/mysql
sudo /usr/local/mysql/bin/mysql_ssl_rsa_setup --no-defaults --datadir=/data/mysql
sudo chown -R mysql: /data/mysql

my.cnf の設置

sudo cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
sudo vim /etc/my.cnf

設定を編集します。

[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
user=mysql

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]
socket=/tmp/mysql.sock

pid 用のディレクトリを作成します。

sudo mkdir /var/run/mysqld
sudo chown mysql: /var/run/mysqld

mysqld の起動

sudo /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

root パスワードの変更

確認した初期パスワードでログインします。

/usr/local/mysql/bin/mysql -uroot -p

以下のコマンドでパスワードを変更します。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

パスワードなしでログインできるようにするためには /etc/my.cnf を編集して再起動します。

sudo vim /etc/my.cnf
skip-grant-tables  ← [mysqld] セクションに追記

セキュリティ上の観点から好ましくない状況もありそうですが、初期パスワード変更後の root ユーザーでプラグインをアンインストールすることでもパスワードなしログインを実現できます。

UNINSTALL PLUGIN validate_password;
SET PASSWORD = '';

パスワードが失効しない設定であることを確認

mysql 5.7 には、一定期間が経過するとパスワードを失効させてログインできなくする機能があります。不要な場合は、以下のコマンド結果が 0 であることを確認して無効になっていることを確認します。

select @@default_password_lifetime;

ログローテートの設定や PATH 設定

/usr/local/mysql/bin/mysql/ 以下のファイルに PATH を通したり logrotate するため設定などを適宜必要に応じて行います。

関連ページ
    概要 こちらでインストールした MySQL 5.7 を用いてレプリケーション設定を行います。レプリケーションに関する基本的な情報はこちらをご参照ください。 検証用の環境を構築 (mysqld_mutil) 検証のため、ここでは mysqld_mutil を用いて複数の Port で mysqld を起動します。公式ページは
    概要 Mattermost においても Slack のような API が提供されています。動作確認のためのインストール手順および API の利用例を記載します。 インストール手順 CentOS6 の場合は以下のようになります。 Installing Mattermost on RHEL 6.6 Database のインストール