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

前端之家收集整理的这篇文章主要介绍了无法从本地主机(Docker for Mac beta)连接到Docker中的MySQL前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在Mac OS X El Capitan上.

用于使用Docker ToolBox.刚删除并安装了Docker for Mac beta. (我认为拆卸和安装是干净的.)

基本上启动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,root,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用户访问权限,而不是默认localhost.

传递-p 3306:3306您只需创建一个从主机转发到客户机的端口.因此,您只需允许您的用户从您的hist机器172.17.0.1连接到DB.

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

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

希望这会有所帮助.

猜你在找的MySQL相关文章