宿主机如何访问 docker 容器的 mysql?

2021-04-01 01:20:26 +08:00
 superviolet

我在 mac 上起了一个 mysql docker 容器, 我现在想要使用 navicat 连接这个 mysql ? navicat 连接参数 我怎么配置都连不上。球球了。心态炸裂了卧槽了

2003 - Can't connect to MySQL server on '172.17.0.2' (60 "Operation timed out")

这是 navicat 提示 我靠 我想白嫖各位大佬

另外 现在越来越觉得 复制粘贴这个功能。真的有毒 现在百度出来的答案。全都是复制的 我就不明白了。这 tm 一样的垃圾文章 复制来复制去有个毛用?

各位大佬 怎么看?

1083 次点击
所在节点    问与答
9 条回复
Leviathann
2021-04-01 01:56:28 +08:00
就 docker run 的时候指定端口映射啊
-p 3306:3306
0bit
2021-04-01 07:10:03 +08:00
一楼正解。
映射之后,在客户端就链接 127.0.0.1:3306 就行了。

另外,docker 用起来的话,概念不算多,建议简单刷一下概念,建立一个整体概念。

想对外提供服务就端口映射 [port] ,
想容器内容持久化就磁盘映射 [volume] ,
想传递配置进去就用环境变量 [env] ,
想获取容器的 log 就在内部输出到 [stdout / stderr] ,
想调用容器的命令,就用 [exec] 。
touchwithe
2021-04-01 08:19:42 +08:00
楼上说的对!
我也想吐槽网上的各种复制粘贴之风,简直是互联网世界的垃圾。
uselessVisitor
2021-04-01 08:32:56 +08:00
分享一个 docker-compose 文件
version: '3.1'
services:
mysql:
restart: always
image: mysql:5.7.22
container_name: mysql
ports:
- 3306:3306
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M
--sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
volumes:
- mysql-data:/var/lib/mysql

volumes:
mysql-data:
uselessVisitor
2021-04-01 08:34:57 +08:00
@beichenhpy mysql-data:对应你的本地路径
KouShuiYu
2021-04-01 10:44:24 +08:00
数据库地址写容器名称就可以
superviolet
2021-04-01 23:48:58 +08:00
@Leviathann 找到问题了,是因为宿主机上原来安装了 mysql,还没有验证具体是端口冲突还是别的问题,我现在把宿主机上的 mysql 卸载掉就可以了
superviolet
2021-04-01 23:51:46 +08:00
@touchwithe 心累啊~ 本来很多文章就没什么质量,在这基础上 还抄来抄去 看吐了。。。
julyclyde
2021-04-04 11:40:46 +08:00
第一,不要在容器里运行基础设施类软件

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/767041

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX