2021年4月6日星期二

使用brew安装两个版本的mysql,使其共存

使用brew安装两个版本的mysql,使其共存(不是同时开启)是真的麻烦

以下记录一下:

  1. 如果你一开始安装了其中一个版本,比如我5.7或者8.0,那么你要做的是在关闭所有mysql服务后,更改datadir 目录(一般是 /usr/local/var/mysql)的名称,比如改成 /usr/local/var/mysql_5.7 ,我的之前是5.7 就改成5.7

    mv /usr/local/var/mysql /usr/local/var/mysql_5.7
    

    注:在homebrew.mxcl.mysql.plist中的<string> </string> 对也修改下,不过目前没发现不修改有什么问题2333

  2. 然后brew cleanup,安装另一个版本

  3. brew unlink mysql@5.7
    brew link mysql --force
    
  4. 查看一下link的版本

    mysql -V
    
  5. 关键的时候来了,如果这时候按照提示的命令启动mysql,

    1. 使用mysql -uroot -p ,大概率会遇到 ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’
    2. 使用mysql.server start ,大概率会遇到 ERROR! The server quit without updating PID file (/usr/local/var/mysql/XXX.local.pid).

    这种事情我搜索了网上大部分的(中英文),大概就两个思路,一是彻底删除干净mysql重装mysql,依靠玄学力量对对抗超出知识范围的不确定性,二是sudo命令,增加权限解决第一条。

    以上是有人成功有人失败,感觉玄学和魔法的力量加重了啊。

    很明显,我是那个不幸运的,两种方法都不行,我于是把目光放在了另一个方面,先修改密码,因为brew安装的mysql是没有预设密码的,所以你 mysql -uroot -p 键入回车进不去报错,这时候就按照老套路修改密码。

  6. 老套路修改密码:

    1. 给 my.cnf 文件添加 skip-grant-tables

    2. 重启:mysql.server restart

    3. 修改之前确认是版本号(确实改对版本了)

      mysql> flush privileges; #刷新
      mysql> use mysql;
      mysql> alter user'root'@'localhost' IDENTIFIED BY 'Abc@11235'
      # 注意: mysql8.0以上密码策略限制必须要大小写加数字特殊符号
      
    4. 然后修改回 my.ini

  7. 重新登录 mysql8 测试,这时候需要输入密码了,键入进去了


    总结

    开发环境的配置,依靠困乏的知识,来对抗简直就像摇骰子一般以试错对抗玄学,这样我一下午的时间就消耗了,珍爱生命,远离配置环境。

    最后测试了两个mysql版本,都是可以运行,强迫症害死人…

0 评论:

发表评论