在Mac系统中安装多个版本的MySQL

引言

在开发过程中,我们有时会遇到需要在同一台机器上安装多个版本的MySQL数据库服务器的情况。这可能是因为不同的项目需要不同版本的MySQL,或者你可能想测试新版本的MySQL,同时保留现有的稳定版本。在本文中,我将分享如何在Mac系统上安装并运行两个不同版本的MySQL。

方法一:使用Homebrew安装不同版本的MySQL

在开始之前,确保你的Mac已经安装了Homebrew。如果你还没有安装Homebrew,可以通过在终端运行以下命令来安装:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

第一步:安装第一个MySQL版本

首先,我们将安装第一个MySQL版本。你可以通过Homebrew来安装:

brew install [email protected]

这里以MySQL 5.7版本为例。安装完成后,我们需要做一些设置:

  1. 将MySQL加入到启动项中,这样每次开机MySQL服务会自动启动。

    brew services start [email protected]
    
  2. 将MySQL的可执行文件路径加入到你的shell配置文件中(如.bash_profile.zshrc),以便可以直接在终端使用mysql命令。

    echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.bash_profile
    

    如果你使用的是Zsh,应该修改.zshrc文件。

  3. 重启你的终端或者运行source ~/.bash_profile(或source ~/.zshrc)来更新环境变量。

第二步:安装第二个MySQL版本

接下来,我们将安装第二个MySQL版本。这里以MySQL 8.0为例:

brew install [email protected]

由于我们已经有一个MySQL版本在运行,我们需要对第二个版本进行不同的配置:

  1. 不要 将第二个MySQL版本加入到启动项,以免与第一个版本冲突。

  2. 修改第二个MySQL版本的默认配置文件(通常位于/usr/local/etc/my.cnf),改变其监听的端口和socket文件位置。

    [mysqld]
    port = 3307
    socket = /tmp/mysql.sock2
    
  3. 手动启动第二个MySQL版本:

    /usr/local/opt/[email protected]/bin/mysqld_safe --defaults-file=/usr/local/etc/my.cnf
    

使用和管理

安装完成后,你可以使用以下命令来启动、停止或重启特定版本的MySQL服务:

brew services start [email protected]
brew services stop [email protected]

并且,你可以通过指定端口和socket来连接到特定版本的MySQL服务器:

mysql -uroot -p --port=3306 --socket=/tmp/mysql.sock  # 连接到MySQL 5.7
mysql -uroot -p --port=3307 --socket=/tmp/mysql.sock2 # 连接到MySQL 8.0

方法二:使用Docker安装不同版本的MySQL

Docker提供了一种更加灵活和隔离的方式来运行不同版本的MySQL。如果你还没有安装Docker,可以从Docker官网下载并安装Docker Desktop for Mac。

安装和运行MySQL容器

  1. 下载MySQL镜像
    首先,我们需要从Docker Hub下载所需版本的MySQL镜像。例如,安装MySQL 5.7和8.0,可以使用以下命令:

    docker pull mysql:5.7
    docker pull mysql:8.0
    

如果你是m芯片的Mac,那么可能会在拉取镜像的时候出现这样的问题:

请添加图片描述

这是因为许多Docker镜像默认是为x86_64架构(即传统的Intel和AMD处理器)构建的。对于ARM架构,需要特定的镜像。为了解决这个问题,你可以尝试以下方法:
Docker提供了一个 --platform选项,允许你指定想要运行镜像的平台类型。

docker pull --platform linux/arm64 mysql:5.7 
  1. 运行MySQL容器
    接下来,我们将运行两个不同版本的MySQL容器。为了避免端口冲突,我们需要为每个容器指定不同的端口映射。例如:

    docker run --name mysql57 -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:5.7
    docker run --name mysql80 -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3307:3306 -d mysql:8.0
    

    这里-p标志用于映射主机端口到容器端口(主机端口:容器端口)。-e标志用于设置环境变量,在这里设置了MySQL的root密码。

管理和使用MySQL容器

  • 访问MySQL容器
    你可以使用以下命令连接到运行中的MySQL容器:

    docker exec -it mysql57 mysql -uroot -p
    docker exec -it mysql80 mysql -uroot -p
    

    这里mysql57mysql80是容器的名称,你需要输入之前设置的密码来访问数据库。

  • 管理MySQL容器
    对于Docker容器,你可以使用以下命令来启动、停止或重启容器:

    docker start mysql57
    docker stop mysql80
    docker restart mysql57
    
  • 外部连接
    由于我们已经映射了端口,所以可以从Mac上的任何MySQL客户端通过localhost:3306连接到MySQL 5.7容器,通过localhost:3307连接到MySQL 8.0容器。

清理和移除容器

当你不再需要运行MySQL容器时,可以使用以下命令来停止并移除容器:

docker stop mysql57 mysql80
docker rm mysql57 mysql80

如果你想移除下载的MySQL镜像,可以使用:

docker rmi mysql:5.7
docker rmi mysql:8.0

如何选择

  • Docker对性能的开销会大一些,但是隔离性更好,可以避免版本之间的直接冲突;
  • Homebrew安装性能更好,但是需要仔细配置以确保MySQL实例不会相互冲突,比如需要管理不同的端口、配置文件和服务。

如果你的主机已经存在一个MySQL并且该版本作为主力使用,而你想安装的第二个MySQL并且只是偶尔使用,这种情况下更推荐使用Docker安装第二个MySQL,因为这是一个相对简单且安全的选择,Docker容器内的MySQL实例将与主机上直接安装的MySQL完全隔离。

你可能感兴趣的:(macos,mysql,adb)