MySQL hell…无法连接到数据库/tmp/mysql.sock

更新:我已经停止运行的旧mysql进程并导致一些混乱。现在我想我只有更新的(5.1.40)版本在运行。但是,它指向错误的数据文件。它指向一个默认的安装数据文件,我希望它指向
/var/mysql
中的现有数据文件。这是/etc/my.cnf的一部分
# The following options will be passed to all MySQL clients
[client]
#password   = your_password
port        = 3306
socket      = /var/mysql/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port        = 3306
socket      = /var/mysql/mysql.sock
这是指向较旧的mysql.sock。我似乎无法在较新的MySQL安装的目录树中找到?!?除非它在某个地方模糊不清。 有人帮吗?基本上我安装了一个较新的MySQL,现在需要使用我现有的数据启动这个新版本。并解决这个mysql.sock事情.... 我最近在Mac OS X Server上更新了MySQL,并且从轨道应用程序连接到它有一段时间。或者从命令行始终如一。 我确定这是一个明显的错误,但我只有适度的命令行经验,所以希望有人可以帮助...... 也相关的是我的rails应用程序不再可以连接。无法通过
/tmp/mysql.sock
连接,但我不确定为什么它在那里看,因为/ tmp中没有mysql.sock,我不知道它应该是什么/应该在哪里.... 编辑:从mysql_config --sockets添加结果
$ mysql_config --sockets
Usage: /usr/local/mysql/bin/mysql_config [OPTIONS]
Options:
        --cflags         [-I/usr/local/mysql/include  -g -Os -arch ppc -fno-common   -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT  -DDONT_DECLARE_CXA_PURE_VIRTUAL]
        --include        [-I/usr/local/mysql/include]
        --libs           [-arch ppc  -L/usr/local/mysql/lib -lmysqlclient -lz -lm     -lmygcc]
        --libs_r         [-arch ppc  -L/usr/local/mysql/lib -lmysqlclient_r -lz -lm     -lmygcc]
        --plugindir      [/usr/local/mysql/lib/plugin]
        --socket         [/tmp/mysql.sock]
        --port           [0]
        --version        [5.1.40]
        --libmysqld-libs [-arch ppc  -L/usr/local/mysql/lib -lmysqld -ldl  -lz -lm       -lmygcc]
Edit2里面有mysql_config
$ which mysql_config
/usr/local/mysql/bin/mysql_config
    
已邀请:
您正在尝试为服务器和客户端使用不同的套接字。您的Rails正在尝试连接到/tmp/mysql.sock,MySQL正在侦听/var/mysql/mysql.sock。 通常MySQL配置存储在/etc/my.cnf中,但是在你的输出中我看到套接字路径是作为参数给出的。所以真的取决于你的系统的具体细节。 无论如何,请查看/etc/my.cnf和您的database.yml,并确保mysql.sock出现在两个文件中的相同路径中。     
不确定这是否能完全解决您的问题(您可能需要按照cababunga的建议修复套接字路径),但请尝试
127.0.0.1
绕过套接字连接并建立TCP连接。     
Ruby MySQL模块中的函数
real_connect
实际上需要一堆参数:
real_connect(host,user,password,db,port,socket,flags)
您需要更改的是“socket”参数。在我在Mac OS X上的Python应用程序中,我必须将该套接字参数设置为
/var/mysql/mysql.sock
。 请注意,它不是您需要更改的主机,它是实际的套接字。您可以在配置中使用
socket:
参数吗? 所以这就是你能做的...... 在OS X的终端中运行命令行上的命令
mysql_config --socket
,它应该返回你需要使用的“socket”的值(可能是
/var/mysql/mysql.sock
)。 然后在您的database.yml文件中,确保添加以下行:
socket: /var/mysql/mysql.sock
我主要通过OS X上的Python来解决这个问题并以类似的方式修复它,但我猜想Ruby会给你同样的问题。     

要回复问题请先登录注册