開発環境のMySQLをdockerで動かすようにしたときのメモ
開発環境では、ローカル(PC)にMySQL使っていたのですが、dockerで動かすようにしました。 そのときのメモを残しておきます。
- OS: Ubuntu 18.04 LTS
- 事前準備: docker, docker-compose をインストールしておく
ローカルにインストールしているmysqlを削除する
参考: https://askubuntu.com/questions/172514/how-do-i-uninstall-mysql
sudo apt-get remove --purge 'mysql-server*' 'mysql-common' sudo rm -r /etc/mysql sudo rm -r /var/lib/mysql sudo apt-get autoremove --purge
docker-compose を設定・起動
以下に合わせて、ディレクトリの構成をしておく、できたら、docker-compose up
する
version: '3' services: mysql: image: mysql:5.7 volumes: - ./etc/mysql/conf.d:/etc/mysql/conf.d - ./var/lib/mysql:/var/lib/mysql environment: - MYSQL_ALLOW_EMPTY_PASSWORD=yes ports: - 3306:3306
今回は、root(パスワードなし)を前提に構築しているが、ユーザ・パスワードを指定したい場合は
environment
を設定する必要がある。environment
の値はこちらを参考にする https://hub.docker.com/_/mysql?tab=descriptionMySQLの設定
/etc/mysql/conf.d
にmysql.cnf
を置くようにし、その中で設定する
MySQLのクライアントをインストール
sudo apt install mysql-client libmysqlclient-dev
mysql clientは localhost
を指定するとunix socketで接続しようとするので、
mysql -u root ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) mysql -u root -h localhost ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
vim ~/.my.cnf
に以下を設定し、localhostを指定したときはtcpで接続するようにする。
(接続時、明示的に127.0.0.1を設定すれば問題ないので任意)
[client] protocol=TCP
以上〜