1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

macで異なるバージョンのmysqlを同時に動かす(自分メモ)

Last updated at Posted at 2020-03-12

#異なるバージョンのmysqlを同時に動かしたい
開発に携わっていると複数のバージョンのmysqlが必要になる。ほんとはdockerとか使いたいけど旧石器時代のソースなのでそんなおしゃれなことできない。

##環境

Homebrew 2.2.10
Homebrew/homebrew-core (git revision 9dfa9; last commit 2020-03-11)

##既に入っているmysqlはuninstallします
バックアップをとっておくこと

$ brew uninstall mysql@8.0
$ brew uninstall mysql@5.7
$ rm -rf /usr/local/var/mysql

##とりあえず古いバージョンのmysqlをインストールそして一旦起動

$ brew install mysql@5.7
$ /usr/local/opt/mysql@5.7/bin/mysql.server start

起動後確認後、
/usr/local/var/mysql フォルダができるのでmysqlを一度 stop

$ /usr/local/opt/mysql@5.7/bin/mysql.server stop
#datadirのコピー後でmy.cnfに使用
$ cp /usr/local/var/mysql /usr/local/var/mysql@5.7

フォルダのオーナーが/usr/local/va/mysqlと同じか確認しておく。
違うのであればchownで揃えておく。

##古いバージョン用のmy.cnfを作成
portとsocketを変更(デフォルトは3306なのでそれ以外)

# my.cnf を確認
$ mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf 

$ cp /usr/local/etc/my.cnf /usr/local/etc/my@5.7.cnf
$ vi /usr/local/etc/my@5.7.cnf

[mysqld]
sql_mode="NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES"
# Only allow connections from localhost
bind-address = 127.0.0.1
port=3307
socket = /tmp/mysql2.sock
pid-file = /usr/local/var/mysql/mysql.local.2.pid
log-error =  /usr/local/var/mysql/mysql.local.2.err
datadir = /usr/local/var/mysql@5.7

##configファイルを指定して古いバージョンのmysqlを立ち上げてみる

/usr/local/opt/mysql@5.7/bin/mysqld_safe --defaults-file=/usr/local/etc/my@5.7.cnf&

##mysqlに接続してみる

$ mysql -uroot  -S /tmp/mysql2.sock -P3307 -h127.0.0.1
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 57
Server version: 5.7.29 Homebrew

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

5.7起動完了!!
パスワードなどは後で適宜変える。
止めるときはプロセスをkillする。

$ ps aux | grep mysql
powari         70919   0.0  1.5  4764772 244664 s000  S     6:05PM   0:04.35 /usr/local/opt/mysql@5.7/bin/mysqld --defaults-file=/usr/local/etc/my@5.7.cnf --basedir=/usr/local/opt/mysql@5.7 --datadir=/usr/local/var/mysql@5.7 --plugin-dir=/usr/local/opt/mysql@5.7/lib/plugin --log-error=/usr/local/var/mysql/mysql.local.2.err --pid-file=/usr/local/var/mysql/mysql.local.2.pid --socket=/tmp/mysql2.sock --port=3307
powari         70765   0.0  0.0  4292424   1120 s000  S     6:05PM   0:00.04 /bin/sh /usr/local/opt/mysql@5.7/bin/mysqld_safe --defaults-file=/usr/local/etc/my@5.7.cnf

$sudo kill -9 70919
```

##次に新しいバージョンのmysqlインストール
mysql5.7のほうは一旦プロセスをkillして止めておいたほうが良いかも。

```
# データ削除
$ rm -rf /usr/local/var/mysql

# インストール
$ brew install mysql@8.0

# my.cnf編集
$ vi /usr/local/etc/my.cf
[mysqld]
bind-address = 127.0.0.1
port=3306
socket = /tmp/mysql.sock
pid-file = /usr/local/var/mysql/mysql.local.1.pid
log-error =  /usr/local/var/mysql/mysql.local.1.err
datadir = /usr/local/var/mysql


# サーバー起動
$ /usr/local/opt/mysql@8.0/bin/mysql.server start
```

8.0起動完了!!

##もう一度古いバージョン起動してみる

```
/usr/local/opt/mysql@5.7/bin/mysqld_safe --defaults-file=/usr/local/etc/my@5.7.cnf&
```

これで同時に2つのバージョンのmysqlが動いていることになります。





1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?