LaradockにあるMySQLのパスワード変更をしたらDBにログイン接続できなくなった話

2020/03/12

LaradockにあるMySQLの設定を変更したのですが、コンテナを再起動しても反映されませんでした。

結構はまってしまったので、備忘録として調査内容をまとめておきます。

MySQLのパスワードを変更するケースで紹介しましたが、MySQLのバージョンを変えても同様の手順になるかと思います。

 

問題

・ AWS上にて Laradock で Laravel の環境を作った。

・ パスワードがデフォルトの『secret』なので別のパスワード名に変更する。

・ Laradock の .envファイルのパスワードを変更してコンテナを再起動。

・ Laravel側の .envファイルも変更 + php artisan config:cache 済み。

・ MySQLにログインできなくなる。

 

調査

・ 変更前のパスワード『secret』だとログインできる。

・ どうやらMySQLコンテナを再起動してもenvファイルは反映されないみたいだ。

 

解決策

・ MySQLのイメージとコンテナ、データを削除する。

・ もう一度、MySQLのイメージとコンテナを入れなおす。

・ パスワードが変更された。

 

手順

1.Laradock側のenvファイルを編集

Laradock側の環境ファイル(.env)を vi で編集します。

vi の使い方については以下をご参考ください。


# Laradockのファイルまで移動
$ cd laravel_app4/laradock/

# root権限になっておく
$ sudo su

# Laradockの環境ファイルを編集
$ vi .env

 

 

2.イメージの削除


# 現状のイメージの確認
# docker images

# イメージの削除
# docker rmi イメージID

# 削除できなかったので強制的に削除
# docker rmi -f イメージID


 

 

実演

 

3.コンテナの削除


# 現状のコンテナの確認
# docker ps -a

# コンテナの削除
# docker rm コンテナID

 

 

4.データの削除


# データの削除
# rm -rf ~/.laradock/data/mysql/

 

5.MySQLコンテナを再ビルド


# 再ビルド
# docker-compose up -d mysql

image構築 コンテナ構築 コンテナ起動
docker-compose build × ×
docker-compose up
docker-compose start × ×
docker-compose run 〇(単独) 〇(単独) 〇(単独)
buildコマンド
imageを構築します。コンテナは作成しません。
upコマンド
キャッシュがある場合はそれを使って一発でイメージの構築から、コンテナの構築・起動までします。imageがなくてもbuildから実行してくれます。
startコマンド
既存のコンテナを起動します。
runコマンド
imageの構築から、コンテナの構築・起動までしてくれます。

 

実演

 

6.Laravel側のenvファイルを編集


# 起動中のコンテナのシェルへ接続
# docker-compose exec workspace bash

/var/www# vi .env

 

7.動作確認


# Laravelのコンテナから抜ける
# exit

# SSHでMySQLにアクセス
# docker-compose exec mysql bash

# MySQLにrootユーザにログイン
# mysql -uユーザ名 -p新パスワード

 

実演

 
ログイン成功したらOKです。

以上です。

 

自宅ではじめるDocker入門

Docker関連の数ある本でも、図や丁寧な解説で「わかりやすい」と評判がいい本です。コマンドを叩きながら、Dockerにおける「イメージ」「コンテナ」が理解できます。まだ、Kindle版が出てないのは惜しいですが、Docker入門としておススメの1冊です。

Amazonで詳細を見る

オススメ

 

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-環境構築