无法从本地主机连接到Docker中的MySQL(Docker for Mac beta)

在Mac OS X上El Capitan。

用于使用Docker Toolbox。 刚刚删除,并安装了Mac版的Docker。 (我认为拆卸和安装是干净的。)

基本上像这样启动一个MySQL服务器容器:

docker run -e MYSQL_ROOT_PASSWORD=1234 -d mysql:5.7.13 

(或者mysql / mysql-server:5.7.13)。 发射似乎是罚款。然后我试图从Sequel Pro通过“标准”方式,主机127.0.0.1,根,1234连接到此服务器。

 Unable to connect to host 127.0.0.1 because access was denied. Double-check your username and password and ensure that access from your current location is permitted. MySQL said: Access denied for user 'root'@'localhost' (using password: YES) 

使用-p 3306:3306没有帮助。

它曾经与我启动的Docker Toolbox一起工作

  docker run \ -e MYSQL_ROOT_PASSWORD=1234 \ -d \ --expose 3306 \ -p 3306:3306 \ mysql:5.7.12 

并连接到主机192.168.99.100。 这工作得很好。

我怀疑在安装过程中Docker for Mac“迁移”(将现有的Docker的东西复制到新的VM中)可能会保留一些旧数据(来自旧的MySQL容器),但是不知道如何继续。

谢谢你的帮助!

看起来您没有为其他主机的root用户configuration访问权限,而不是默认的localhost。

通过-p 3306:3306您只需创build一个从主机到访客端口的端口转发。 所以你可以简单地让你的用户从172.17.0.1的hist机器连接到数据库。

例如,我正在使用下面的虚拟容器启动脚本,它会更改root的密码,以防以前不会更改:#!/ bin / bash

 cd $(dirname $0) docker-compose up -d ROOT_PASSWORD=root CONTAINER=____mysql_container_name___ CHANGE_PASS_SQL="delete from mysql.user;grant all on *.* to 'root'@'%' identified by '${ROOT_PASSWORD}' with grant option;flush privileges;" CHANGE_PASS="docker exec -it ${CONTAINER} mysql -s -uroot -e \"${CHANGE_PASS_SQL}\" 2>/dev/null" WITH_PASS='echo "select now();" | docker exec -i ${CONTAINER} mysql -root -proot 1>&2 2>/dev/null' NO_PASS='echo "select now();" | docker exec -i ${CONTAINER} mysql -root 1>&2 2>/dev/null' WITH_PASS_EXIT_CODE=1000 NO_PASS_EXIT_CODE=1000 while [ ${WITH_PASS_EXIT_CODE} -gt 0 ];do eval "${WITH_PASS}" WITH_PASS_EXIT_CODE=$? eval "${NO_PASS}" NO_PASS_EXIT_CODE=$? echo -n . if [ ${NO_PASS_EXIT_CODE} -eq 0 ];then eval "${CHANGE_PASS}" else sleep 1 fi done echo 

希望这会有所帮助。