Mysql容器啟動失敗-解決方案
在看問題之前首先熟悉幾個命令
相關命令
1.docker attach 連接到正在運行中的容器;
命令:docker attach --sig-proxy=false mynginx
2.docker exec 這個命令比較方便,可以在容器運行別的服務時連接上該容器;
命令:docker exec -it mysql_database1 /bin/bash
3.docker inspect mysql 查看容器的詳細信息;
命令:docker inspect mysql
4.docker commit :從容器創建一個新的鏡像;
命令:docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1
錯誤描述
啟動mysql容器命令
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=topsci123 -d centos/mysql-57-centos7
啟動mysql後可以正常運行,期間修改了一次密碼,這個啟動其實是很不嚴謹的要加上MySQL的配置文件和數據的映射路徑,
正確啟動命令: docker run -p 3306:3306 --name mysql -v /opt/docker_v/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d imageID
後來主機重啟之後,我重啟了一下docker 服務,發現mysql 容器掛了,查看mysql容器日誌
Version: ‘5.7.21‘ socket: ‘/tmp/mysql.sock‘ port: 0 MySQL Community Server (GPL)
2018-11-29T12:11:04.706404Z 2 [Note] Access denied for user ‘root‘@‘localhost‘ (using password: NO)
---> 12:11:04 MySQL started successfully
2018-11-29T12:11:04.714244Z 3 [Note] Access denied for user ‘root‘@‘localhost‘ (using password: NO)
=> sourcing 40-datadir-action.sh ...
---> 12:11:04 Running datadir action: upgrade-warn
---> 12:11:04 MySQL server version check passed, both server and data directory are version 5.7.
=> sourcing 50-passwd-change.sh ...
---> 12:11:04 Setting passwords ...
mysql: [Warning] Using a password on the command line interface can be insecure.
2018-11-29T12:11:04.745280Z 4 [Note] Access denied for user ‘root‘@‘localhost‘ (using password: YES)
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
這裏可以看出是賬號密碼連接錯誤,雖然不知道為什麽剛起來docker 容器他就直接要連接進入mysql,因為密碼在安裝完之後修改了一次密碼,其實也不建議這麽做的,因為每次docker 重啟之後原容器都會初始化,除非按照上面說到的把相關重要的文件或者數據映射到本地,而且容器本身就不適合數據庫,這裏做一個小科普。
通過 docker inspect mysql 命令發現環境變量MYSQL_ROOT_PASSWORD=**** ,變成了默認密碼,因為我創建完容器之後修改了一次密碼,導致現在重啟之後數據還原與環境變量不符,導致連接失敗。雖然不能確定問題是否是這裏的問題,但是要先解決這個環境變量的問題。
Mysql容器啟動失敗-解決方案