MySQL-docker镜像使用
下载 MySQL 镜像
1 | docker pull mysql |
创建挂载目录
创建 data 目录用来挂载数据库文件,创建 conf 目录用来挂载配置文件
第一次启动 MySQL
1 | docker run -p 3306:3306 --name mysql -v D:/Docker/MySQL/conf:/etc/mysql/conf.d -v D:/Docker/MySQL/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest |
解释下这条命令的参数
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器 ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机 (宿主) 端口: 容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
–name=”nginx-lb”: 为容器指定一个名称;
–dns 8.8.8.8: 指定容器使用的 DNS 服务器,默认和宿主一致;
–dns-search example.com: 指定容器 DNS 搜索域名,默认和宿主一致;
-h “mars”: 指定容器的 hostname;
-e username=”ritchie”: 设置环境变量;
–env-file=[]: 从指定文件读入环境变量;
–cpuset=”0-2” or –cpuset=”0,1,2”: 绑定容器到指定 CPU 运行;
**-m :**设置容器使用内存最大值;
–net=”bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
–link=[]: 添加链接到另一个容器;
–expose=[]: 开放一个端口或一组端口;
–volume , -v 本地目录:容器目录: 绑定一个卷,将容器目录挂载到本地目录
启动 Mysqldocker 容器
利用 docker ps 命令可以查看当前运行的容器,docker ps -a 查看所有容器(包括停止的容器)
可以命令 停止和启动 docker 容器
停止容器:docker stop [CONTAINER ID]
启动 容器:docker start [CONTAINER ID]
也可以在 windows 的 docker 桌面版里启动
进入容器
命令 docker exec -it [NAMES] bash,这里 names 可以用那么也可以使用容器 ID 即 Container ID
进入数据库
使用 mysql -uroot -p123456 进入数据库
使用 show databases; 查看数据库
use mysql 进入名为 mysql 的数据库,show tables 可以查看当前数据库有哪些表
使用 SQL
1 | source /etc/mysql/conf.d/kaoqin.sql |
创建账户
1 | # 创建用户并开启远程登录 |
为了方便以后远程连接,需要下面操作
需要修改 user 表中的 user 为 root 变为 %。这里没有修改成功,因为一开始就是 %
exit 关掉,利用 service mysqld restart 重新启动 mysql 服务。
如何远程连接 Docker 的 Mysql 容器
首先查看 dockers 镜像 ip,在终端输如 ifconfig,如果出现 bash: ifconfig: command not found,则需要安装一些东西 sudo apt-get install net-tools,现在就可以访问 ifconfig
现在还不能连接成功,给 root 用户分配权限
1 | alter user 'root'@'%' identified with mysql_native_password by '123456'; |
刷新权限
1 | flush privileges; |
遇到的问题
新装了 mysql8.0 后再用 navicat 链接就会报 2059 的错误。
上网查了发现是 8.0 之后 mysql 更改了密码的加密规则,只要在命令窗口把加密方法改回去即可。
首先使用以下命令进入 MySQL 的 docker 容器
1 | docker exec -it MYSQL8.0 bash |
然后登录 MySQL
1 | mysql -uroot -p123456 |
然后运行以下 SQL 即可
1 | alter user 'root'@'%' identified by '123456' password expire never; |
参考
写最好的Docker安装最新版MySQL8(mysql-8.0.31)教程(参考Docker Hub和MySQL官方文档)_docker 安装mysql8_大白有点菜的博客-CSDN博客