中财盛建设集团公司网站,网站建设文字资料,东营市建设信息网官网,阿米纳网站建设Mac M2 搭建Mysql 1、前言2、前置说明-Docker的代理访问3、前置说明-Mysql的镜像访问3.1、提取信息3.1.1、开启Mysql的实例3.1.2、Dokcer连接Mysql3.1.3、官方简易版的docker-compose3.1.4、如何登录mysql bash3.1.5、自定义my.cnf文件3.1.6、如何知道其他自定义配置项 4、M2安… Mac M2 搭建Mysql 1、前言2、前置说明-Docker的代理访问3、前置说明-Mysql的镜像访问3.1、提取信息3.1.1、开启Mysql的实例3.1.2、Dokcer连接Mysql3.1.3、官方简易版的docker-compose3.1.4、如何登录mysql bash3.1.5、自定义my.cnf文件3.1.6、如何知道其他自定义配置项 4、M2安装Mysql具体步骤5、总结 1、前言 本文主要针对M2下相应进行开发环境搭建然后做一个文档记录希望对相关人有帮助。如果只想要Docker-Compose文件请转到第四节。
2、前置说明-Docker的代理访问 由于docker是海外所以需要翻墙为了下载镜像OK所以在M2 Docker中设置代理否则Docker登录会异常。Docker Destop的安装教程这里则不重复累赘在官网比较容易。
为了使得代理生效由于Docker Destop使用CLI的方式的Docker生效需要将代理软件设置全局代理。每个代理软件设置的方式不同。最后需要在Command输入如下命令使得生效。
export all_proxyhttp://127.0.0.1:8001如果想取消则输入下面命令
unset all_proxy每个人的代理软件不同所以代理地址也会不一样所以需要看好自己的代理地址目前举例子的情况下我以自己的代理软件的代理地址为例代理地址设置的是8001。
3、前置说明-Mysql的镜像访问
点击 MYSQL官方镜像说明注意如何Docker命令的官方信息。 官方地址需要VPN才能访问 3.1、提取信息
本节是针对文档的一些关键性提取官方文档主要是介绍如何Docker CLI的方式启动Mysql。
3.1.1、开启Mysql的实例
docker run --name some-mysql -e MYSQL_ROOT_PASSWORDmy-secret-pw -d mysql:tagsome-mysql是容器名MYSQL_ROOT_PASSWORD是root用户的数据库密码tag是指定版本
3.1.2、Dokcer连接Mysql
通过mysql的命令行客户端连接mysql
docker run -it --network some-network --rm mysql mysql -hsome-mysql -uexample-user -psome-myslql是mysql的容器名some-network是连接docker的网络 这里的some-nework我觉得在上一个命令没有指定的情况下是容器启动对外暴露的localhost:随机端口这个在docker destop中一般会展示随机接口是什么只是我没有试过这个命令。我认为构建docker-compose指定暴露宿主机的同样端口比较好否则暴露是随机端口不会进行连接。 3.1.3、官方简易版的docker-compose
官方介绍了简易版的docker-compose但是没有一些自定义设置比如字符集设置之类本文第三大部分则是以这个为基础研究了一下docker-compose语法然后写了一个docker-compose具体步骤请看后文第四章。
# Use root/example as user/password credentials
version: 3.1services:db:image: mysql# NOTE: use of mysql_native_password is not recommended: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password# (this is just an example, not intended to be a production configuration)command: --default-authentication-pluginmysql_native_passwordrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: exampleadminer:image: adminerrestart: alwaysports:- 8080:8080然后运行
docker stack deploy -c stack.yml mysql或者
docker-compose -f stack.yml up等待初始化完成访问 http://swarm-ip:8080, http://localhost:8080, 或者 http://host-ip:8080 访问页面的adminer。 adminer是页面管理mysql的一种工具 3.1.4、如何登录mysql bash
当容器起来后如何登录mysql内部
docker exec -it some-mysql bashsome-mysql就是你起的容器id名字。
如果想知道自己启动的容器名则用
docker ps然后看列表输出后面会介绍。
3.1.5、自定义my.cnf文件
MySQL的默认配置可以在/etc/mysql/my.cnf中找到可以通过外部指定容器配置目录的方式把自定义的/my/custom/config-file.cnf的配置文件作为docker启动mysql容器时的默认设置。
docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORDmy-secret-pw -d mysql:tag3.1.6、如何知道其他自定义配置项
多配置选项可以作为标志传递给mysqld然后能够自定义容器而无需cnf文件。例如如果想要更改所有表的默认编码和排序规则以使用UTF-8utf8mb4只需运行以下命令
docker run --name some-mysql -e MYSQL_ROOT_PASSWORDmy-secret-pw -d mysql:tag --character-set-serverutf8mb4 --collation-serverutf8mb4_unicode_ci如何想知道其他自定义配置项
docker run -it --rm mysql:tag --verbose --help注意这里是提前下载好了docker的image 4、M2安装Mysql具体步骤
如果没有改命令的方式下载mysql的5.7x版本会爆 “no matching manifest for linux/arm64/v8 in the manifest list entries”实际上mac兼容amd64架构所以下载镜像指定platform。
docker pull --platform linux/amd64 mysql:5.7.42然后在自己的机器随意找一个目录做宿主机和Docker的文件关联例如我在docker-dev目录下创建mysql,以及相关的目录和文件。
mkdir /Users/tanqiwei/docker-dev/mysql
mkdir /Users/tanqiwei/docker-dev/mysql/env-volumn
mkdir /Users/tanqiwei/docker-dev/mysql/env-volumn/conf
mkdir /Users/tanqiwei/docker-dev/mysql/env-volumn/data
mkdir /Users/tanqiwei/docker-dev/mysql/env-volumn/logs
mkdir /Users/tanqiwei/docker-dev/mysql/env-volumn/mysql-files然后进入/Users/tanqiwei/docker-dev/mysql/env-volumn/conf创建my.cnf,内容如下所示
[client]
default_character_setutf8
[mysqld]
default_character_setutf8最后在/Users/tanqiwei/docker-dev/mysql下编辑docker-compose.yml文件。
# Use root/example as user/password credentials
version: 3.1services: mysql-dev:image: mysql:5.7.42# 针对M1/M2的毛病platform: linux/amd64# 当docker启动时该容器也重新启动restart: alwaysports: - 3306:3306environment: MYSQL_ROOT_PASSWORD: rootvolumes: # 将宿主机的my.cnf文件映射到Docker容器中- /Users/tanqiwei/docker-dev/mysql/env-volumn/conf:/etc/mysql/conf.d# 将容器的/var/lib/mysql目录挂载到宿主机的/Users/tanqiwei/docker-dev/mysql/env-volumn/data目录- app_db:/var/lib/mysql# 将容器的/var/log/mysql目录挂载到宿主机的/Users/tanqiwei/docker-dev/mysql/env-volumn/logs目录- /Users/tanqiwei/docker-dev/mysql/env-volumn/logs:/var/log/mysql- /Users/tanqiwei/docker-dev/mysql/env-volumn/mysql-files:/var/lib/mysql-filesadminer:image: adminerrestart: alwaysports:- 8101:8080environment:ADMINER_DEFAULT_SERVER: mysql-devdepends_on:- mysql-devvolumes: app_db:driver: localdriver_opts:type: noneo: binddevice: /Users/tanqiwei/docker-dev/mysql/env-volumn/datanetworks: nt_mysql-dev:driver: bridge 最后使用Docker Compose命令启动
接下来进入mysql中命令,先输入docker ps得到运行列表从log也可以看出mysql启动实例名字。
tanqiweitanqiweideMacBook-Pro ~ % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
faf7e3cd831c adminer entrypoint.sh php -… About an hour ago Up About an hour 0.0.0.0:8101-8080/tcp mysql-adminer-1
27cd34e2146c mysql:5.7.42 docker-entrypoint.s… About an hour ago Up About an hour 0.0.0.0:3306-3306/tcp, 33060/tcp mysql-mysql-dev-1
429226c9d199 mariadb:10.6.4-focal docker-entrypoint.s… 25 hours ago Up 3 hours 3306/tcp, 33060/tcp mysql-test-db-1这里可以看出来是mysql-mysql-dev-1然后执行下面命令
docker exec -it mysql-mysql-dev-1 bash接着创建数据库test命令简单不展示了。
然后打开浏览器http://localhost:8101. 这里是由于我登录过所以左侧保留有信息 于是mysql的开发环境就搭建好了。 如果想关闭则新建terminal在/Users/tanqiwei/docker-dev/mysql的目录下即原来docker-compose.yml文件所在的目录执行如下命令关闭即可
docker compose stop5、总结
这篇文章主要是我安装mysql的一些笔记希望对其他人有帮助