我正在尝试在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)
但是,再一次,没有运气。如何创建套接字需要做什么?
答案 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