docker安装mysql
外部机器不能和docker中 mysql 容器 直接访问 , 但是可以通过挂载交互数据,,这就需要在启动容器的时候设置好-v 的内容,当然这只是打通了容器和宿主,如果是windows,先要连接linux下的docker的mysql,则需要设置3306端口的防火墙,具体操作百度.
- 装好docker 后按如下操作进行,不要手写,复制粘贴,防止写错!
Docker 安装mysql
1.拉取镜像
docker pull mysql
2.创建映射目录 (也可以手动创建文件夹,但如果是mac可能会有权限问题,chmod777 即可解决,尽量用命令)
mkdir docker/mysql/conf docker/mysql/data docker/mysql/logs
3.进入到创建的mysql目录中 (就是刚才自己创建的目录)
cd docker/mysql
4.创建容器并启动 (这里的 $PWD 就是当前目录,为了避免写错,需要先进到该目录下 ,再复制下面的命令执行, 不只到怎么换行,就把下面的放到一行再贴过去)
docker run -itd --name=mysql01 -p 3306:3306 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
注意!
此处的$PWD是当前目录,首先进入到要挂载到的本地的地方,然后创建conf,logs,data等文件夹,
上面的命令 解释:
-v 设置 挂在目录:容器目录,
踩坑
-
如果有权限问题,例如当前电脑用户没有权限去操作当前文件夹 只需要(mac 和 linux 可能会遇到), chmod -R 777 当前目录. 即可解决,
-
如果提示:某个文件夹 is not sharing 如果文件夹的权限只有读,设置文件夹的权限改为 可读可写,就修改创建的文件夹权限
-
如果报sharing field,说明docker没有设置可以共享的文件夹地方,需要在 docker的图形化操作页面,preferences->Resource->File Sharing中设置 挂载的父路径
连接 mysql
- 用命令连接
docker exec -it mysql01 /bin/bash
mysql -uroot -p
输入密码即可
修改访问权限并刷新权限 `update user set host = '%' where user = 'root';``flush privileges;`
- 用IDEA 工具连接
输入账号 root。密码 123456