上海 松江 网站制作,湖州 外贸网站建设,做电商网站价格表,网站建设创意广告词1、准备工作 如果不想看前面的废话请直接右边目录跳到 运行容器 处 默认你已经有 docker 环境。 Windows 推荐 Docker Desktop #xff08;下载地址#xff09;并基于 WSL2 运行 Docker 环境 mac 推荐 Orbstack #xff08;下载地址#xff09;#xff08;这个很节省资源下载地址并基于 WSL2 运行 Docker 环境 mac 推荐 Orbstack 下载地址这个很节省资源尤其对于 16GB 内存的用户个人用户免费也支持 K8S更厉害的是随便创建 Linux 虚拟机数量不需要再安装别的虚拟机软件再去找一个 iso 镜像文件安装 Linux 系统 本人以 mac 环境演示 简单放两张图给大家看看这个 OrbstackDocker Desktop 相信很多同学都有。 如果这个虚拟机再搞个克隆功能就好了把一台的基础环境搭建好之后克隆多台再配置差异化的东西就非常快了。 2、正题开始
2.1、寻找镜像
直接使用 docker search 命令搜索 MySQL 的镜像 如果安装那个 mariadb 其实也是一样的。引用亚马逊云关于 MySQL 与 MariaDB 的区别链接 MariaDB 是 MySQL 的修改版本。在 MySQL 被 Oracle 公司收购后出于许可和分发方面的问题MySQL 的原始开发团队制作了 MariaDB。自收购以来MySQL 和 MariaDB 经历了不同的发展。但是MariaDB 采用 MySQL 的数据和表定义文件还使用相同的客户端协议、客户端 API、端口和套接字。这是为了让 MySQL 用户能够轻松切换到 MariaDB。 使用 DockerHub 地址查找 直接使用 docker pull mysql 的话默认会拉取最新的镜像即: mysql:latest 2.2、拉取镜像
废话不多说了我这里以 docker pull mysql:8.3.0-oracle 为例不知道用什么镜像推荐直接用 Oracle 的即可
docker pull mysql:8.3.0-oracle2.3、运行容器
使用以下命令运行 MySQL 容器
docker run -p 3307:3306 --name mysql8 --restartalways --privilegedtrue \
-v /Users/lyk/docker-test/mysql/log:/var/log/mysql \
-v /Users/lyk/docker-test/mysql/data:/var/lib/mysql \
-v /Users/lyk/docker-test/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORDroot -d mysql:8.0.36-oracle注意不要删掉后面的 \ 号 如果你是基于 WSL 的 Docker 环境宿主机的目录你可以放到你真实电脑也可以放到 WSL Linux 子系统中的目录比如 /opt/docker/mysql 这种到时候通过别的终端连接 WSL 子系统进行修改即可我个人建议直接映射到 WSL 子系统中的目录去因为 Windows 的目录结构跟 Linux 的目录映射有时候一些容器会出一些问题 如果不提前拉取镜像运行容器的时候发现没有这个镜像也会自动去拉取下来再运行。 因为我的 3306 端口用完了所以宿主机我映射到了3307。目录我就随便搞一个 docker-test测试而已大家看需求放好目录。 参数说明
参数格式说明-p宿主机端口 : 容器端口将容器内的端口与宿主机端口映射使得直接访问宿主机的端口就可以访问到容器–name–name xxx给容器起一个名字–restart–restart xxx (可选no(默认值),on-failure,always)容器重启策略比如运行失败了会尝试重启又比如每次重启电脑都自动启动容器–privileged–privilegedxxx (可选 false(默认值)、 true)值为 true 时授予容器内的进程全部的特权。 当容器运行在特权模式下时容器内的进程将拥有一些特权例如 可以访问主机的所有设备和文件系统。 可以进行网络配置和管理包括创建和修改网络接口和路由表-v-v 宿主机目录 : 容器内目录 (此时是目录映射或者叫做目录挂载)或者直接: -v 宿主机目录 (此时是数据卷挂载)目录挂载容器内的文件与宿主机的目录的文件直接一一映射即在宿主机修改文件容器内的文件直接生效例如做 my.cnf 配置文件放在宿主机目录并且映射到容器中我只需要修改宿主机的文件即可完成对容器内的 MySQL 配置修改-e-e 参数名参数值用于在容器启动的时候往容器中设置一些初始值例如上述命令中就是给 MySQL 容器设置初始的 root 用户密码是 root注意参数名必须是有效的否则报错不能说 MySQL 本身没有 AAA 这个参数你自己随便搞一个进去你自己运行的程序除外比如你自己跑一些 Spring Boot程序你当然可以自己设置一些自定义参数-d加上 -d 参数之后容器会静默在后台启动也就是不会在你的终端窗口打印信息类似跑 Java 程序的 nohup java -jar xxx.jar 命令 此处放一张上面提到的目录挂载与数据卷挂载的区别回答来自 ChatGPT 将上面命令在 shell 窗口中运行完之后就看到我们的容器启动起来了 说明忘记在映射目录加上用户目录了我是放在用户目录大家忽略上图的/docker-test 与 上面命令提到的 /Users/lyk/docker-test 即可。 运行成功以后会显示容器的 id唯一标志 通过 docker ps 查看运行中的容器
2.4、Navicat 连接 测试连接连通性 2.5、完事
如果能正常连接那就没什么问题了。如果遇到问题参考下面的可能遇到的问题。
3、可能遇到的问题
如果Navicat报错代码2059则进行以下修改 %是针对所有用户即开启远程访问
进入容器
docker exec -it mysql8 bash注意 如果你使用的是alpine类型的镜像那么命令都是以 sh 结尾(所有 alpine 镜像都是),例如 docker exec -it mysql8 sh容器内执行以下命令分两种可以允许远程访问 or 本地访问
ALTER USER root% IDENTIFIED BY root PASSWORD EXPIRE NEVER;
ALTER USER root% IDENTIFIED WITH mysql_native_password BY root; 如果只允许本机访问比如你就是本地玩玩就设置这个localhost只允许本机访问
ALTER USER rootlocalhost IDENTIFIED BY root PASSWORD EXPIRE NEVER;
ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY root;执行完记得刷新权限
FLUSH PRIVILEGES;至此我们的 MySQL 就安装完成了。