2015-10-21 77 views
0

我使用官方mysql 5.5 docker作爲數據庫容器。 第一拉容器:掛載目錄時無法連接到mysql docker

docker pull mysql:5.5 

然後我運行:

docker run --name mysqldb -e MYSQL_ROOT_PASSWORD=testword mysql:5.5 

它成功運行,並與IP容器MySQLdb的是172.17.0.20.And我可以通過這個訪問此MySQLdb的:

mysql -h 172.17.0.20 -u root -p # this command from 172.17.0.23 

輸入密碼,然後我得到這樣的:

mysql> 

這是一個官方mysql的測試。我可以從遠程主機/容器訪問mysqldb。 後來我想用主機目錄(存放一些數據庫),所以我這樣做:

docker run --name mysqldb_with_data -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=testword mysql:5.5 

它成功運行。但是,當我想用​​IP 172.17.0.21訪問此mysqldb_with_data容器中,我遇到一個錯誤:

mysql -h 172.17.0.251 -u root -p # this command from 172.17.0.23 
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'172.17.0.23' (using password: YES) 

我只是用主機的數據替換mysql的容器的數據,但我不能從遠程主機訪問MySQLdb的/包容。我不知道爲什麼。

回答

0

enter image description here

這對我的作品。在-uroot之間以及-ptestword之間不要有任何空格,請試用您的命令。

0

我也有同樣的問題。這是因爲我抄上/var/lib/mysql容器/var/lib/mysql主機 OS通過:

docker cp <container name>:/var/lib/mysql/ /var/lib/

要複製到/ var/lib中/ MySQL的在你需要做以下正確的方法:

  1. 獲取安裝的原始源

docker inspect <container name> | grep -A7 Mounts | grep Source "Source":"/var/lib/docker/volumes/5a5fcb8c277c6a28f6eea2d156b5703cfc9feb86786ecf61caab95d803773647/_data",

  • 停止容器
  • docker stop <container name>

  • 複製從 「源」 數據以/var/lib/mysql/
  • mkdir /var/lib/mysql/

    cp -a /var/lib/docker/volumes/5a5fcb8c277c6a28f6eea2d156b5703cfc9feb86786ecf61caab95d803773647/_data/* /var/lib/mysql/

    完成此操作後,您將能夠按照預期使用dockerized mysql。

    所以,基本上問題是與mysql數據文件,而不是dockerezation。爲了讓它們處於一致的狀態,它們應該在數據庫停止時被複制。

    相關問題