MySQL地狱...无法连接到数据库/tmp/mysql.sock

Mel*_*emi 6 mysql sockets ruby-on-rails mysql.sock osx-server

更新:我已经停止了正在运行并引起一些混乱的旧 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
Run Code Online (Sandbox Code Playgroud)

这是指向较旧的 mysql.sock。我似乎无法在较新的 MySQL 安装的目录树中找到?!?除非它在某个不为人知的地方。

有人帮忙吗?基本上我安装了一个更新的 MySQL,现在需要让这个新版本用我现有的数据启动。并整理出这个 mysql.sock 的东西....


我最近在 Mac OS X 服务器上更新了 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]
Run Code Online (Sandbox Code Playgroud)

Edit2 which mysql_config

$ which mysql_config
/usr/local/mysql/bin/mysql_config
Run Code Online (Sandbox Code Playgroud)

cab*_*nga 2

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

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

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

  • 较新的安装在 /usr/local/mysql 下吗?在我看来你没有运行这个实例。 (2认同)