在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
希望这会有所帮助.