2016/11/07 時点、多くの環境では yum レポジトリ等に mysql 5.7 が含まれていません。公式ページからダウンロードしてインストールする手順を二つまとめます。
yum レポジトリを追加する手順
Installing MySQL on Linux Using the MySQL Yum Repository (mysql 5.7) をもとにしています。
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-community
が enabled=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 レポジトリを追加する手順
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 - Generic
の Compressed 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 レプリケーション設定 (2段, 3段)MySQL DB サーバは自身へのクエリをバイナリログとして書き出すことができます。レプリケーションとは、追加の MySQL DB サーバが、別の MySQL DB サーバが出力したバイナリログを自分のリレーログとよばれるログにコピーして、更にリレーログに記載されたクエリを自分自身のテーブルに実行する機能です。バイナリログを出力する DB をマスターとよび、自分のリレーログにコピーする DB をス...
- MyBatis 3 サンプルコード (Java/MySQL/Gradle)MyBatis は、JDBC を直接利用せずに、XML ファイル等で用意した SQL 文を利用して DB にアクセスするための Java ライブラリです。内部的には JDBC が利用されているため、JDBC のインストールは必要です。同様のライブラリに Hibernate ORM があります。DB は特に MySQL を対象として、MyBatis バージョン 3 の
- MySQL HandlerSocket Plugin の簡単な使用方法HandlerSocket は MySQL プロセス内のスレッドとして動作する、MySQL の NoSQL フロントエンドです。独自のプロトコルを用いて TCP 通信を行います。SQL 構文の解析が不要、プロトコルがシンプルなどの理由によって、単純な DB アクセスが高速に実行可能になります。MariaDB であれば[標準プラグインとして付属](https://mariadb.co
- Spring Boot から MyBatis を利用するための設定 (Gradle/MySQL)MyBatis を Spring Boot で利用するための基本的な設定およびサンプルコードをまとめます。サンプルコードにおいては、特に MySQL を対象とします。 MyBatis Spring-Boot-Starter チュートリアル
- MySQL InnoDB Memcached Plugin の簡単な使い方MySQL の InnoDB ストレージエンジンに直接 memcached プロトコルで高速にアクセスするためのプラグインが存在します。仕組みは MySQL HandlerSocket Plugin と似ています。図解した公式ページはこちらです。MySQL 5.6 を対象として簡単に使い方をまとめます。 参考ページ [14.17 InnoDB