欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mac下安装mysql报Can't connect to local MySQL server through socket '/tmp/mysql.sock' brew

程序员文章站 2022-05-29 11:02:22
...

今天用 brew install mysql 安装完成后,使用mysql -v 命令发现报Can't connect to local MySQL server through socket '/tmp/mysql.sock' 的错误,关键是我用 mdfind -name mysql.sock 去搜索也没有查到我的电脑哪里有这个文件。

 

找了好多方案,试过完全删除掉,再重新用brew 安装,都没有成功。

 比如方案一:

Can't connect to local MySQL server through socket '/tmp/mysql.sock'

上述提示可能在启动mysql时遇到,即在/tmp/mysql.sock位置找不到所需要的mysql.sock文件,主要是由于my.cnf文件里对mysql.sock的位置设定导致。

mysql.sock默认的是在/var/lib/mysql, 如果发现确实是在该目录下,可以在[mysqld]下面加入mysql.sock的path
vi /etc/my.cnf(my.cnf也可能在其他路径下)

[mysqld]
port            = 3306
socket       = /var/lib/mysql/mysql.sock

但是要保证使用mysql的用户具有对该目录的写权限,否则这样的改动由于权限限制仍然会报错。

所以为了避免权限问题也可以使用软链接为/var/lib/mysql/mysql.sock创建一个到/tmp/mysql.sock的联接

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

由于/tmp/文件夹默认对other有w权限,这样就可以避免权限问题。

此外,如果发现mysql.sock不在默认的/var/lib/mysql位置,一种解决方法是使用find命令搜索mysql.sock的位置,然后按前面两种解决方案挑一种做即可。

 
我还没能解决。
 
 
 
 
 
 
 

 

 

 第二个方案:

http://ruby-china.org/topics/794

 

其中一个大神说的貌似有道理,我的mac和Linux默认的不同,

Mac的MySQL和Linux下的配置是有区别的,而MySQL默认使用Linux的配置。 建议你观察以下具体错误信息中说的那个找不到mysql.sock的那个地方的目录到底是否存在 这里贴一个最小的,但是能让mysql工作的配置文件 配置文件的位置 /etc/my.cnf 或者 /usr/local/etc/my.cnf 你检查一下,如果你的 /etc/my.cnf 不存在这个文件,你放一个在那里也行

[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8

[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
init-connect ='SET NAMES utf8'
max_allowed_packet = 64M
bind-address = 127.0.0.1
port = 3306
socket = /tmp/mysql.sock

如果你用brew install mysql安装的,那么brew装好以后,把这些配置放到/usr/local/etc/my.cnf,然后执行下面命令就完成了mysql安装了


 我用 mdfind -name my.cnf的确能找到很多文件,

➜  ~ mdfind -name my.cnf
/usr/local/Cellar/mysql/5.7.12/mysql-test/suite/ndb_ddl/my.cnf
/usr/local/Cellar/mysql/5.7.12/mysql-test/suite/ndb_binlog/my.cnf
/usr/local/Cellar/mysql/5.7.12/mysql-test/suite/ndb_big/my.cnf
/usr/local/Cellar/mysql/5.7.12/mysql-test/suite/ndb/my.cnf
/usr/local/Cellar/mysql/5.7.12/mysql-test/suite/ndbcluster/my.cnf
/usr/local/Cellar/mysql/5.7.12/mysql-test/suite/ndb_team/my.cnf
/usr/local/Cellar/mysql/5.7.12/mysql-test/suite/ndb_rpl/my.cnf
/usr/local/Cellar/mysql/5.7.12/mysql-test/suite/ndb_memcache/my.cnf
/usr/local/Cellar/mysql/5.7.12/mysql-test/suite/federated/my.cnf
/usr/local/Cellar/mysql/5.7.12/mysql-test/include/default_my.cnf
/usr/local/Cellar/mysql/5.7.12/mysql-test/suite/rpl/my.cnf
/usr/local/Cellar/mysql/5.7.12/mysql-test/suite/rpl_ndb/my.cnf
/usr/local/Cellar/mysql/5.7.12/mysql-test/suite/rpl/extension/bhs/my.cnf
/Applications/XAMPP/xamppfiles/etc/my.cnf
➜  ~

 然后我复制了一份配置文件的内容,在/usr/local/etc 下建了这个my.cnf文件,内容是:

[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8

[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
init-connect ='SET NAMES utf8'
max_allowed_packet = 64M
bind-address = 127.0.0.1
port = 3306
socket = /tmp/mysql.sock

 

然后用mysql -v ,仍然报Can't connect to local MySQL server through socket '/tmp/mysql.sock' 的错误

   后来查到先要mysql.server start ,但是一直报

Starting MySQL

. ERROR! The server quit without updating PID file (/usr/local/var/mysql/lihailindeMacBook-Pro.local.pid).

 

    折腾到最后,终于搞定,用 sudo mysql.server start 就可以了。。。 然后用 sudo mysql ,显示Success了!

相关标签: brew