一、docker下载并运行mysql镜像

下载:

docker pull mysql:5.7

运行镜像:

docker run -it --rm --name mysql -e MYSQL_ROOT_PASSWORD=hanxue -p 3306:3306 -d mysql  

进入容器中的mysql的shell命令:

docker exec -it mysql bash

登录mysql账号:

mysql -uroot -phanxue

查看host和user:

确保root的host为‘%’即代表可以远程连接。

给root远程登录权限:

ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'hanxue'; 

刷新:

FLUSH PRIVILEGES;

此时mysql设置完毕。

二、主机Navicat连接Ubuntu中docker运行的mysql镜像

查看Ubuntu当前ip:

发现docker竟然自己分配了个ip,想想美滋滋,于是在主机试试ping一下:

真的能ping通,于是直接在主机打开navicat,输入信息并连接:

这是咋回事?怎么会报2003 - Can't connect to MySQL server on 'x.x.x.x' (10038)错误呢?明明能ping通的啊,怎么连接不上,想想觉得很傻,这个ip是docker分配的ip啊,又不是Ubuntu的主机IP,于是ping一下10.0.2.15:

??????????????????

原来VirtualBox默认用的是NAT网络转换

,这个10.0.2.15和我主机的ip根本不在一个局域网中,自然ping不通。于是把连接方式改成桥接网卡:

查看ip:

主机ip:

看网段就知道了还ping啥呢,于是改掉mysql主机ip为222.24.32.231:

ok,问题解决~

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐