1. 程式人生 > >Mysql容器啟動失敗-解決方案

Mysql容器啟動失敗-解決方案

conf mage 重要 als 查看 director 一次 ops star

在看問題之前首先熟悉幾個命令

相關命令

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)

ERROR 1045 (28000): 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容器啟動失敗-解決方案