首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MySQL上使用Homebrew的多个macOS版本导致错误-不能通过套接字连接到本地MySQL服务器

在MySQL上使用Homebrew的多个macOS版本导致错误-不能通过套接字连接到本地MySQL服务器
EN

Server Fault用户
提问于 2023-06-02 15:26:24
回答 1查看 12关注 0票数 0

我正在尝试使用Homebrew设置多个MySQL版本。我已经使用了MySQL 8.*,它运行良好。但是,由于今天的一些旧的项目需求,我已经安装了另一个版本的MySQL (5.7)。现在,当我切换到mysql@5.7时,它会给出以下错误。

代码语言:javascript
运行
复制
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

请看以下细节

两个版本的MySQL都是使用国产安装的。

MySQL 8.* (最新) location

代码语言:javascript
运行
复制
/usr/local/Cellar/mysql/8.0.33/*

MySQL 5.7位置

代码语言:javascript
运行
复制
/usr/local/Cellar/mysql@5.7/5.7.42/*

它们的符号链接在/usr/local/opt/*

我修改了 have brew.mxcl.mysql@5.7.plist,如下所示。

原始

代码语言:javascript
运行
复制
...


    ...
    
        /usr/local/opt/mysql@5.7/bin/mysqld_safe
        --datadir=/usr/local/var/mysql
    
    RunAtLoad
    
    WorkingDirectory
    /usr/local/var/mysql

改性

代码语言:javascript
运行
复制
...


    ...
    
        /usr/local/opt/mysql@5.7/bin/mysqld_safe
        --datadir=/usr/local/var/mysql57
    
    RunAtLoad
    
    WorkingDirectory
    /usr/local/var/mysql57

为了在不同版本之间切换,我在~/.zhsrc中设置了一个别名

代码语言:javascript
运行
复制
# MySQL Version Switching
mysqlv() {
    brew services stop mysql
    brew services stop mysql@5.7
    brew unlink mysql mysql@5.7
    brew link --force --overwrite $1
    brew services start $1
}

alias mysql57="mysqlv mysql@5.7"
alias mysql80="mysqlv mysql"
export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"

稍后,我将用户的密码设置为none,并使用以下查询。

代码语言:javascript
运行
复制
SET PASSWORD FOR root@localhost='';

现在,当我运行别名mysql57时,它切换并链接了MySQL版本,但是当我尝试登录到mysql -uroot时,它会出现以下错误。

代码语言:javascript
运行
复制
ERROR 2002 (HY000): Can't connect to local MySQL server through socket 

有人能帮我解决这个问题吗?这样我就可以切换和使用任何版本的MySQL。

EN

回答 1

Server Fault用户

发布于 2023-06-02 16:45:03

我认为这个问题与以下事实有关:两个mysqld实例似乎都配置为使用相同的套接字文件/tmp/mysql.sock。如果其中一个实例停止时套接字文件未正确删除,则可能会在启动另一个实例时引发问题。

要解决这个问题,有不同的选择:

  • 使用TCP连接到mysqld服务器而不是使用套接字。
  • 对mysql服务器实例使用坞容器。如果您正在进行web开发,我强烈建议您看看德德夫,这使得设置不同版本的mysqld非常容易。
  • 通过为至少一个实例修改mysqld配置,为实例配置不同的套接字文件:
代码语言:javascript
运行
复制
[mysqld]
socket=/tmp/mysql2.sock
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1132501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档