在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
希望这会有所帮助.
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|