Mac同时安装5.6和5.7

背景

同时开发多个项目,老项目使用的是mysql5.6,新项目用的mysql5.7版本,通过homebrew安装之后,只能启动其中一个,另一个会失败。

安装

失败原因分析

brew 安装的mysql默认端口号都是3306,数据目录也都是一样的/usr/local/var/mysql,同时启动两个一定会冲突。
所以就要解决方案就是修改他们启动的参数。

mysql默认安装参数

basedir

通过brew安装的软件,路径默认都是在/usr/local/Cellar下边,
我的mysql安装路径是:

启动脚本

在mac上,一般通过brew services list列出所有已安装的软件,通过brew services start [email protected]启动mysql。

在mysql的安装路径下,我们可以找到两个文件

这两个文件配置了我们通过brew start mysql时的默认参数,比如[email protected]





        KeepAlive
        
        Label
        [email protected]
        ProgramArguments
        
                /usr/local/opt/[email protected]/bin/mysqld_safe
                --datadir=/usr/local/var/mysql56
        
        RunAtLoad
        
        WorkingDirectory
        /usr/local/var/mysql56


可以看到配置了--datadir参数,也就是mysql数据目录,我们可以通过修改这些参数,达到mysql5.6和5.7使用不同路径的目的

修改5.6和5.7的配置

同样的,修改mysql5.7的配置

启动失败问题

修改完之后,尝试启动brew services start [email protected],不出意外的话,应该会失败。

可以到对应的数据目录查看启动日志,找到失败原因~~

我的日志在/usr/local/var/mysql56/captain.local.err,报错如下

[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

失败原因
由于这个数据目录是我新建的空目录,里边缺少了mysql自带的权限相关的表,所以需要先对mysql做初始化操作。
在mysql5.6和5.7的初始化操作命令是不同的

  • 5.6
bin/mysql_install_db --user=mysql --basedir=. --datadir=/usr/local/var/mysql56
  • 5.7
bin/mysqld --datadir=/usr/local/var/mysql57/ --initialize --user=mysql

重新启动两个数据库

brew services start [email protected]
brew services start [email protected]
image.png
修改密码

重置完,mysql没有密码,可以连接mysql,进去之后set password for root@localhost=password("abc123")修改密码

你可能感兴趣的:(Mac同时安装5.6和5.7)