[英]MySQL doesnt run on OSX after intall — Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
[英]Ruby on Rails 3 Can't connect to local MySQL server through socket '/tmp/mysql.sock' on OSX
我有一个标准的 Rails3 环境,RVM 1.2.9,Rails 3.0.5,Ruby 1.9.2p180,MySQL2 Gem 0.2.7,mysql-5.5.10-osx10.6-x86_64
运行rake db:migrate
以创建数据库时出现的错误是:
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
config/database.yml 有
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
当然这是我遗漏的一些简单的东西。
首先,找到您的套接字文件:
mysqladmin variables | grep socket
对我来说,这给出了:
| socket | /tmp/mysql.sock |
然后,在您的config/database.yml
添加一行:
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
socket: /tmp/mysql.sock
找到了!
将 config/database.yml 中的host: localhost
更改为host: 127.0.0.1
以使 rails 通过 TCP/IP 而不是本地套接字连接。
development:
adapter: mysql2
host: 127.0.0.1
username: root
password: xxxx
database: xxxx
您的 mysql 服务器可能没有运行。 下面解释如何启动服务器。 这是 mysql 下载附带的 README 文件的摘录。
安装后,您可以通过在终端窗口中运行以下命令来启动 MySQL。 您必须具有管理员权限才能执行此任务。
如果您已安装启动项,请使用以下命令:
shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
(ENTER YOUR PASSWORD, IF NECESSARY)
(PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)
如果不使用启动项,请输入以下命令序列:
shell> cd /usr/local/mysql
shell> sudo ./bin/mysqld_safe
(ENTER YOUR PASSWORD, IF NECESSARY)
(PRESS CONTROL-Z)
shell> bg
(PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)
这些是解决此问题的选项:
选项 1:将您的主机更改为 127.0.0.1
staging:
adapter: mysql2
host: 127.0.0.1
username: root
password: xxxx
database: xxxx
socket: your-location-socket
选项 2:您似乎有 2 个连接到服务器 MySql。 要找到您的套接字文件位置,请执行以下操作:
mysqladmin variables | grep socket
对我来说:
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' exists!
或者
mysql --help
我收到此错误是因为我在 OS X 版本 10.9.5 中为 PHP 应用程序安装了 XAMPP。 在此处选择默认套接字位置之一。
我选择默认 Rails 应用程序:
socket: /tmp/mysql.sock
对于我的 PHP 应用程序,我安装了 XAMPP,所以我在这里设置了我的套接字:
socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
OS X 中的 OTHERS 套接字位置
对于 MAMPP:
socket: /Applications/MAMP/tmp/mysql/mysql.sock
对于 MySQL 的软件包安装程序:
socket: /tmp/mysql.sock
对于与 Mac OS X 服务器捆绑的 MySQL:
socket: /var/mysql/mysql.sock
对于 Ubuntu:
socket: /var/run/mysqld/mysql.sock
选项 3:如果所有这些设置都不起作用,您可以删除您的套接字位置:
staging:
# socket: /var/run/mysqld/mysql.sock
我希望这对你有帮助。
“/tmp/mysql.sock”将在您启动 MySQL 服务器时自动创建。 所以请记住在启动 rails 服务器之前这样做。
我在 OSX 上安装 MAMP 后,MySQL 套接字位于/Applications/MAMP/tmp/mysql/mysql.sock
。 我使用locate mysql.sock
来查找我的 MySQL 套接字位置。
所以我的config/database.yml
看起来像:
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
socket: /Applications/MAMP/tmp/mysql/mysql.sock
如果您使用的是 Mac OSX,
MySQL Unix 套接字的默认位置在 Mac OS X 和 Mac OS X Server 上有所不同,具体取决于您选择的安装类型
按安装类型划分的 Mac OS X 上的 MySQL Unix 套接字位置
因此,只需将socket: /tmp/mysql.sock
database.yml更改为指向正确的位置,具体取决于您使用的操作系统和安装类型
Mac OS X 上 MySQL 套接字的默认位置是/var/mysql/mysql.sock
。
我遇到了同样的问题,但没有一个答案能一步一步地说明我需要做的事情。 发生此错误是因为您的套接字文件尚未创建。 您所要做的就是:
/tmp/mysql.sock
被创建了,为此你运行: mysql server start
config/database.yml
文件并添加/编辑socket: /tmp/mysql.sock
条目rake:dbmigrate
,一切都应该正常运行我发现问题是我只有一个生产环境。 我没有开发或测试环境。
通过添加 'RAILS_ENV=production' 来给出命令
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
有效
如果您通过 XAMPP 运行 MYSQL:
打开 XAMPP mysql 配置文件(在 OSX 上):
/Applications/XAMPP/etc/my.cnf
复制套接字路径:
socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
打开rails项目的数据库配置文件:myproject/config/database.yml
将套接字配置添加到开发数据库配置中:
-->
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: difiuri_falcioni
pool: 5
username: root
password:
host: localhost
socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
享受 :)
你有这样的问题:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
Ans: $ sudo service mysql start
在我的机器上 mysqld 服务停止了,这就是为什么它给我同样的问题。
1:- 转到终端并输入
sudo service mysqld restart
这将重新启动 mysqld 服务并在所需位置创建一个新的 sock 文件。
如果您在 Ubuntu 或其他 Linux 上通过 XAMPP 或 LAMPP 运行 MYSQL,请尝试:
socket: /opt/lampp/var/mysql/mysql.sock
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.