真正解决Docker运行MySQL后本地无法访问问题的方法
适用系MySQL8.0.x/5.6.x
一、跟着教程安装
1.1 拉取 MySQL 镜像
docker pull mysql:latest
1.2 查看本地镜像
使用以下命令来查看是否已安装了 mysql:
docker images
1.3 运行容器
安装完成后,我们可以使用以下命令来运行 mysql 容器:
docker run -itd --name mysql8 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
参数说明:
-p 3308:3306 :映射容器服务的 3306 端口到宿主机的 3308 端口,外部主机可以直接通过 宿主机ip:3308 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
1.4 安装成功
通过 docker ps 命令查看是否安装成功:
![]()
1.5 附加设置
#进入容器 docker exec -it [CONTAINER ID] bash #登录mysql mysql -u root -p ALTER USER 'root'@'localhost' IDENTIFIED BY '密码'; #添加远程登录用户 CREATE USER '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码'; GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%';
二、报错
2.1 尝试在宿主机本地连接Docker的MySQL
mysql -h localhost -u root -P 3308 -p #报错 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
mysql -h 127.0.0.1 -u root -P 3308 -p #报错 error: 2013, Lost connection to MySQL server at 'reading initial communication packet', system error: 0
要解决上面两个报错,必须要明白docker与宿主通讯的方式。
解决方法:
本地pc->linux->docker,它们的访问路径大概是这样。
首先要获得linux的ip,并确认本地pc能ping通linux机器。如果无法ping通,则无法访问。
我的linux是用vmware虚拟出来的ubuntu,原来虚拟机的上网方式是nat,这时虚拟机能ping通pc的ip,但pc无法ping通虚拟机。暂时找不到解决方法。
将虚拟机的上网方式改为桥接,ip自动获取,一连接就成功。
总结
到此这篇关于真正解决Docker运行MySQL后本地无法访问问题的方法的文章就介绍到这了,更多相关Docker运行MySQL本地无法访问内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
MySQL安装详解图文版(V5.5 For Windows)
这几年一直在用MySQL,并且是Windows+.Net+MySQL的搭配,用MyISAM引擎支持过单表每天千万以上的数据递增,TB级的数据MySQL游刃有余。2011-09-09
解决Mysql建表时报错invalid ON UPDATE clause for 'create_d
这篇文章主要介绍了解决Mysql建表时报错invalid ON UPDATE clause for 'create_date' column问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12


最新评论