【MySQL】【Linux】 MySQL を複数インスタンスで起動させる ~ Linux編 ~

■ 方法

[1] mysqld_multi を利用する
 => MySQL 5.6以前の方法。

[2] systemctlを利用する方法
 => MySQL 5.7.13以降の方法。今回は、こっちを扱う。

※バージョンを確認するには「mysql --version」を実行する

■ 環境

 * OS : CentOS7
 * DB : MySQL5.7.16

■ 前提条件

MySQL のインストール

 * 以下の関連記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/36283180.html

デフォルトのMySQLを停止

# デフォルトMySQLを一旦停止
systemctl stop mysqld.service

■ 設定手順

 * ポート「3306」をそのままにし、「13306」を新たに立ち上げる

【1】ディレクトリ作成

mkdir -p /var/lib/mysqld/mysql_13306

chown mysql: /var/lib/mysqld/mysql_13306

【2】設定ファイル「my.cnf」の修正

sudo vi /etc/my.cnf

[mysqld@mysql_13306]
port=13306
datadir=/var/lib/mysqld/mysql_13306
socket=/var/lib/mysqld/mysql_13306/mysql.sock
log-error=/var/log/mysqld_13306.log

【3】自動起動設定

systemctl enable mysqld@mysql_13306

【4】MySQL起動

# デフォルトのMySQL(3306)を起動
systemctl start mysqld.service

# MySQL(13306)を起動
systemctl start mysqld@mysql_13306

■ rootユーザ設定

 * 以下、関連記事およびトラブルシューティング
http://blogs.yahoo.co.jp/dk521123/36283180.html
http://blogs.yahoo.co.jp/dk521123/36508783.html

[1] /var/log/mysqld_13306.log で、検索キーワード「temporary password」などで仮パスワードをコピーしておく

sudo less /var/log/mysqld_13306.log
/temporary password

2016-08-07T14:27:06.815348Z 1 [Note] A temporary password is generated for root@localhost: ****
# q で終了

[2] mysqlコマンドでログインする

パスワードは[1]の値を入れる
mysql -u root -p -P 13306 --protocol=TCP

[3] rootユーザを設定する

# パスワード「Passwd1#」の場合
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Passwd1#';
# 権限
GRANT ALL ON  *.* TO 'root'@'%' IDENTIFIED BY 'Passwd1#' WITH GRANT OPTION;

FLUSH PRIVILEGES;

SELECT Host, User FROM mysql.user;


関連記事

MySQL の設定 ~ Linux / CentOS 編 ~

http://blogs.yahoo.co.jp/dk521123/36283180.html

複数インスタンスをあげた際に、別ポートのDBにmysqlコマンドでログインできない

http://blogs.yahoo.co.jp/dk521123/36508783.html

MySQL を複数インスタンスで起動させる ~Windows編~

http://blogs.yahoo.co.jp/dk521123/36588436.html