OS X Mavericks:my.cnf中定义的mysql套接字,但没有创建

时间:2013-12-21 06:34:00

标签: mysql macos

我正在尝试在OS X Mavericks上安装mysql5(来自Oracle的最新产品,通过.dmg)。我的/opt/local/my.cnf看起来像这样:

[client]
socket=/tmp/mysql.sock

[mysqld]
socket=/tmp/mysql.sock

[safe_mysqld] 
err-log=/var/log/mysqld.log 
pid-file=/var/run/mysqld/mysqld.pid

当我尝试连接时,我得到以下内容:

$ mysql5 -u root -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

并且没有创建/tmp/mysql.sock个文件。

这是我的/tmp目录:

$ ls -l /tmp
lrwxr-xr-x@ 1 root  wheel  11 Oct 24 08:31 /tmp -> private/tmp

我也试过从命令行强制套接字:

$ time sudo mysqld_safe5 --socket=/tmp/mysql.sock
Password:
131221 07:26:02 mysqld_safe Logging to '/opt/local/var/db/mysql5/Macintosh.local.err'.
131221 07:26:02 mysqld_safe Starting mysqld daemon with databases from /opt/local/var/db/mysql5
131221 07:17:26 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

我知道它正在读取conf文件,因为如果我删除它,当我尝试连接时,我得到一个不同的套接字位置:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock' (2)

但是,再一次,没有运气。如何创建套接字需要做什么?

2 个答案:

答案 0 :(得分:1)

更改/ tmp文件夹以获得MySQL用户的权限。 (chown mysql:mysql / tmp或chmod 777 / tmp可以解决你的问题。)

答案 1 :(得分:0)

尝试使用dtrace来查看mysqld是否实际打开了套接字,如果是,则在哪里。您还可以告诉服务器正在读取哪些配置文件,尽管这似乎不是问题,因为传递--socket = ...不起作用。

我习惯于Linux,但最近开始在工作中使用dtrace。这是一个非常简单的示例,说明如何跟踪open(2)调用,您可以修改这些调用来跟踪套接字创建,或者只是所有系统调用:https://github.com/tsibley/dtrace-scripts/blob/master/trace-open.d