在M1芯片的Macbook上使用docker-compose启动mysql,并利用 NaviCat Premium 客户端进行连接
1、查看芯片版本
先打开控制台,使用 uname -m 来查看自己CPU芯片的架构
yourPrj % uname -marm64
苹果的M系列芯片使用的是ARM64架构,因此,需要安装相应版本的一些列工具。
2、安装docker
因为我是M1芯片,所以安装docker desktop时候,当然要安装Apple silicon版本,这样也可以下载支持ARM的mysql镜像了。
顺便说一下,直接使用VSCode的插件功能安装docker desktop,会给安装成amd64版本,很奇怪。
docker desktop下载主页:https://docs.docker.com/desktop/install/mac-install/
Apple silicon版安装包下载地址: https://desktop.docker.com/mac/main/arm64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-mac-arm64
Intel chip版安装包下载地址: https://desktop.docker.com/mac/main/amd64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-mac-amd64
M1也可以安装amd64版本的docker desktop,但是就不能安装arm的镜像了。
3、安装mysql
登录hub.docker.com,搜索mysql,查看支持arm64的镜像。
发现只有mysql8及以上的版本才支持arm64。
我手头只有NaviCat 11 premium 连接,不能使用最新的MySql8.0镜像,否则会报错说client版本过低。
解决方法只有两个:
A、docker desktop不安装Apple silicon版本,安装Intel chip的;然后就可以安装MySql 5.7,然后NaviCat 11 就可以用了;
B、升级NaviCat版本。
方案B显然比较容易,上Navi主页www.navicat.com上一看,好家伙,最新版 NaviCat 16 premium 买断价是11999,也可以1799月付。如果只买Mysql版本,个人用也需要1099。果然是土豪才能用的工具啊。以后再也不敢小看这个贵妇猫了。
方案A的话虽然试过可以安装成功,但m1芯片安装amd的docker,再拉amd的mysql心里十分纠结。想想方案B换个路子,也许能更香。
访问mac.mac89.com/mac/3447.html ,可以继续愉快的使用MySQL,且是最新的8了。
4、mysql8和5.7的区别(来自ChatGPT3.5)
MySQL 8 和 MySQL 5.7 是两个不同的版本,它们之间有一些显著的差异。
以下是它们之间的一些区别:
1、数据字典:MySQL 8 中引入了数据字典,它是一个用于存储数据库对象信息的内部系统表,MySQL 5.7 中没有数据字典。
2、角色管理:MySQL 8 引入了角色管理系统,可以创建、管理和分配角色,MySQL 5.7 中没有角色管理系统。
3、加密功能:MySQL 8 中增强了加密功能,支持使用密钥管理系统(Keyring)加密数据和日志文件,MySQL 5.7 中没有这个功能。
4、JSON 支持:MySQL 8 对 JSON 的支持更好,提供了更多的函数和操作符,MySQL 5.7 对 JSON 的支持相对较少。
5、改进的性能:MySQL 8 对 InnoDB 存储引擎进行了改进,包括更快的索引和查询优化,比 MySQL 5.7 更高效。
总的来说,MySQL 8 比 MySQL 5.7 更加先进和高级,但是也需要更高的系统配置和更好的硬件支持来实现更好的性能表现。对于一些较为简单的项目或者要求较低的项目,MySQL 5.7 也可以胜任。
-------------------------------------------------
5、如果拉取的是mysql5.7镜像,还需要进入容器修改权限,不然无法使用IP登录
-------------------------------------------------
进入容器,修改权限,不然无法使用IP登录
py % docker exec -it mysqldb bashbash-4.2mysql -uroot -pEnter password: (此处要输入你启动docker时候设定好的密码)Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 18Server version: 5.7.41 MySQL Community Server (GPL)Copyright (c) 2000, 2023, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> update mysql.user set Host = '%' where User = 'root';Query OK, 1 row affected (0.05 sec)Rows matched: 1 Changed: 1 Warnings: 0mysql> flush privileges;Query OK, 0 rows affected (0.02 sec)mysql>
6、成品docker-compose内容,亲测可用
# 名称:docker-compose.yml# 说明:在M1芯片的Macbook上使用docker-compose启动mysql,并利用 NaviCat Premium 客户端进行连接# 作者:讨厌夏天# 邮箱: 4857819@qq.com# 日期:2023.04.30version: '3.9'services:mysqldb:image: mysql:8.0.33platform: linux/arm64/v8container_name: mysqldbvolumes:# 相对路径映射方法(左侧本地:右侧容器)- ./data/mysql:/var/lib/mysqlrestart: alwaysports:- "33080:3306"environment:MYSQL_ROOT_PASSWORD: Qwer!@#$MYSQL_DATABASE: mysqldbMYSQL_USER: mysqlMYSQL_PASSWORD: Qwer!@#$TZ: Asia/Shanghai
完毕