XamppのMySQLとローカルのMySQLを共存させるためにしたこと


はじめに

タイトル通りでXamppのMySQLとローカルのMySQLの共存に困ったのでメモです。

※Windows環境です

前提


背景として仕事でXamppのMySQLを使うため設定を弄れない!!
→好きに設定を弄りたいのでローカルにMySQLをいれよう!と思ったのが発端です。

以下がXamppのMySQLの設定(弄れない)

>status
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8

実はこの設定だとWindowsのターミナルがutf8で入力されない(cp932)ため日本語をINSERTできません。

参考:mysqlで日本語を入力するとテーブル内で文字が表示されない

ローカルにとりあえずMySQLをインストール


仕事で使う設定を弄るわけにはいかないので、別環境を構築します。

公式からMySQLをインストールしてセットアップ。

サービス作成

C:\mysql-5.6.24-winx64\bin > mysqld -install
Service successfully installed.

起動
$ net start mysql
$ mysql -v
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.6.24 MySQL Community Server (GPL)
$ mysql -u root // ログイン可能

>status
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    cp932
Conn.  characterset:    cp932

→これで日本語もターミナルからインサートできるようになりました。

ただし、このままだとXamppが起動できなくなる


👇エラー内容

ためしにportを変えてみるも直らず。。。

どうやらエラーにも書いてあるようにサービスが邪魔している模様。

サービスの名前を変えて作り直す


サービスの確認 参考

👆net startするとここが実行中になります。

コマンドプロンプト(管理者権限)でサービスを削除する。

>sc delete MySQL
[SC] DeleteService SUCCESS

サービスを作り直す
>mysqld -install MySQL56

注意:サービス作る際、システム環境変数は以下のようにXamppではなくローカル側にすること。


C:\mysql-5.6.24-winx64\bin

起動
>net start mysql56
MySQL56 サービスを開始します.
MySQL56 サービスは正常に開始されました。


同時にMySQLを起動する(ポート番号を変えればOK)


Dockerでポート3306
$ docker-compose up -d mysql nginx
Recreating laradock_docker-in-docker_1 ... done
Recreating laradock_mysql_1 ... done
Recreating laradock_workspace_1 ... done
Recreating laradock_php-fpm_1 ... done
Recreating laradock_nginx_1 ... done

ローカルは3307

※my.iniのportを3307にするだけ。

>net start mysql56
MySQL56 サービスを開始します.
MySQL56 サービスは正常に開始されました。

Xamppは3308

※xampp配下のmy.iniの2か所を修正

[client]

password       = your_password

port            = 3308
socket          = "C:/xampp/mysql/mysql.sock"

Here follows entries for some specific programs

The MySQL server

[mysqld]
port= 3308

確認

👆同時に3つ起動できた◎

※Xamppのphpmyadminが使えなくってしまったので、GUIを使いたい際はWorkbenchで確認する予定です。