MySQL的地狱......无法连接到数据库/tmp/mysql.sock
-
27-09-2019 - |
题
更新:我已经停止其运行,并造成一些混乱的旧的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 ....
我最近更新MySQL的Mac OS X服务器上时遇到的时间连接到它从一个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
解决方案
您要使用不同的插座的服务器和客户端。你的Rails试图连接到/tmp/mysql.sock,由MySQL是在/var/mysql/mysql.sock听。
通常的MySQL配置存储在/etc/my.cnf中,但以ps
你的输出I看到插座路径被给定为一个参数。所以真的取决于你的系统的具体细节。
总之,在看的/etc/my.cnf和你的database.yml,并在这两个文件中相同的路径确保的mysql.sock出现。
其他提示
不知道这是否将彻底解决你的问题(您可能需要通过cababunga的建议,以解决插座路径),但尽量127.0.0.1
绕过套接字连接,并建立一个TCP一个。
红宝石MySQL的模块中的功能real_connect
其实需要一串参数:
real_connect(host,user,password,db,port,socket,flags)
您需要更改一个是“插座”参数。在我的Python在Mac OS X应用程序,我要组插座参数为/var/mysql/mysql.sock
。
于是通知,这不是你需要改变主机,它的实际插槽。是否有一个socket:
参数,你可以在你的配置使用?
因此,这里是你可以做什么......
运行于OS X终端的命令行命令mysql_config --socket
,它应该回到你的“窝”,你需要使用(可能/var/mysql/mysql.sock
)的值。
然后在您的database.yml文件,确保您添加一行:
socket: /var/mysql/mysql.sock
我主要是通过Python在OS X上运行到这一点,并以类似的方式固定,但我要去猜测,红宝石会给你同样的问题。