在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连接到这台服务器,通过" Standard"方式,主机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" migration"在安装过程中(将现有的Docker内容复制到新VM中)可能会保留一些导致问题的旧数据(来自旧的MySQL容器),但不知道如何继续。
感谢您的帮助!
答案 0 :(得分:3)
您似乎没有为其他主机配置root用户访问权限,而不是默认localhost。
传递 -p 3306:3306 您只需创建一个从主机转发到来宾的端口。因此,您只需允许您的用户从您的hist机器连接到数据库,即172.17.0.1。
E.g。我正在使用以下虚拟容器启动脚本,它会更改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
希望这会有所帮助。
答案 1 :(得分:0)
如果上述解决方案对您没有帮助,请检查您的计算机上是否已启动MySql:
mysql.server status
如果它正在运行,则可以通过以下方式停止它:
mysql.server stop
在那之后,重建数据库docker容器,一切都会正常:)