6

更新:我已经停止了正在运行并导致一些混乱的旧 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 应用程序连接到它时遇到了麻烦。或者从命令行始终如一地解决这个问题。

我确定这对我来说是一个明显的错误,但我只有中等的命令行经验,所以希望有人能提供帮助......

同样相关的是我的 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
4

3 回答 3

2

您正在尝试为服务器和客户端使用不同的套接字。你的 Rails 正在尝试连接到 /tmp/mysql.sock,因为 MySQL 正在监听 /var/mysql/mysql.sock。

通常 MySQL 配置存储在 /etc/my.cnf 中,但在您ps的输出中,我看到套接字路径作为参数给出。所以真的取决于你的系统的细节。

无论如何,查看 /etc/my.cnf 和您的 database.yml 并确保 mysql.sock 出现在两个文件中的相同路径中。

于 2010-11-22T22:52:25.903 回答
1

不确定这是否会完全解决您的问题(您可能需要按照 cababunga 的建议修复套接字路径),但请尝试127.0.0.1绕过套接字连接并建立 TCP 连接。

于 2010-11-22T22:53:06.813 回答
1

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,它应该返回您需要使用的“套接字”的值(可能/var/mysql/mysql.sock)。

然后在您的 database.yml 文件中,确保添加以下行:

socket: /var/mysql/mysql.sock

我主要是通过 OS X 上的 Python 遇到这个问题,并以类似的方式修复它,但我猜 Ruby 会给你同样的问题。

于 2010-11-22T23:06:28.763 回答