novicePrgrmr
novicePrgrmr

Reputation: 19385

Getting "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'" error when setting up mysql database for Ruby on Rails app

I have been working on this all day long, and I need some help.

I am trying to setup the mysql database for a RoR project I'm working on from github.

When I try to setup the db in the terminal, I get the following error:

Eric-MacBook:~ eric$ cd ~/review_rocket
Eric-MacBook:review_rocket eric$ rake db:setup
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

I have looked through 20 questions on SO, and none have been able to help me solve my problem.

The database is up and running, and the database.yml is set up too.

I am currently going a little mad... please... help...before it's too late.

UPDATE: I just looked at my installed gems, and for some reason it's showing mysql2 (see below)

Eric-Reas-MacBook:~ ericrea$ gem list

*** LOCAL GEMS ***

multi_json (1.8.2)
mysql2 (0.3.13)
net-sftp (2.1.2) 

That seems a little odd to me...

Update: Here is what my database.yml is looking like:

common: &common
  adapter: mysql2
  encoding: utf8
  reconnect: false
  pool: 5
  user_name: xxxx
  password: xxxx
  socket: /var/run/mysqld/mysqld.sock

development:
  <<: *common
  database: dev_review_rocket

# Warning: The database defined as "money_tracker_test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *common
  database: test_review_rocket

production:
  <<: *common
  database: prod_review_rocket

UPDATE: Now getting weird errors when trying to reinstall mysql with homebrew (see below):

$ brew install mysql
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/mysql-5.6.1
Already downloaded: /Library/Caches/Homebrew/mysql-5.6.13.mountain_lion.bottle.1.tar.gz
==> Pouring mysql-5.6.13.mountain_lion.bottle.1.tar.gz
==> /usr/local/Cellar/mysql/5.6.13/bin/mysql_install_db --verbose --user=ericrea
2013-10-22 18:32:41 56901 [Note] InnoDB: FTS optimize thread exiting.
2013-10-22 18:32:41 56901 [Note] InnoDB: Starting shutdown...
2013-10-22 18:32:42 56901 [Note] InnoDB: Shutdown completed; log sequence number 1626067
2013-10-22 18:32:42 56901 [Note] /usr/local/Cellar/mysql/5.6.13/bin/mysqld: Shutdown complete

Warning: mysql post_install failed. Rerun with `brew postinstall mysql`.
==> Caveats
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.

To connect:
    mysql -uroot

To have launchd start mysql at login:
    ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Then to load mysql now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Or, if you don't want/need launchctl, you can just run:
    mysql.server start
==> Summary
🍺  /usr/local/Cellar/mysql/5.6.13: 9382 files, 354M
Eric-Reas-MacBook:~ ericrea$ brew postinstall mysql
==> /usr/local/Cellar/mysql/5.6.13/bin/mysql_install_db --verbose --user=ericrea
2013-10-22 18:33:22 57135 [Note] InnoDB: FTS optimize thread exiting.
2013-10-22 18:33:22 57135 [Note] InnoDB: Starting shutdown...
2013-10-22 18:33:23 57135 [Note] InnoDB: Shutdown completed; log sequence number 1626087
2013-10-22 18:33:23 57135 [Note] /usr/local/Cellar/mysql/5.6.13/bin/mysqld: Shutdown complete


READ THIS: https://github.com/mxcl/homebrew/wiki/troubleshooting

These open issues may also help:
    https://github.com/mxcl/homebrew/issues/22021
    https://github.com/mxcl/homebrew/pull/22480

Upvotes: 11

Views: 37632

Answers (6)

Praveen George
Praveen George

Reputation: 9715

To solve this error first find your socket file, run the following commands in terminal

mysqladmin variables | grep socket

For me, this gives:

| socket              | /var/run/mysqld/mysqld.sock

Then, add a line to your config/database.yml:

development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
socket: /var/run/mysqld/mysqld.sock

This will solve this problem.

Upvotes: 4

Werner Bihl
Werner Bihl

Reputation: 306

Try and find your MySQL's my.cnf file. On a typical Ubuntu server it is at: /etc/mysql/my.cnf

Open the file and make sure that the socket variable i.e. socket = /var/run/mysqld/mysqld.sock

corresponds to your socket value in your apps' database.yml

Upvotes: 3

novicePrgrmr
novicePrgrmr

Reputation: 19385

I ended up figuring this one out.

I ran the following command:

$ mysqladmin variables | grep socket

Which returned:

| performance_schema_max_socket_classes                  | 12                                                                                                                                                                                                                                                                                                                                               |
| performance_schema_max_socket_instances                | 323                                                                                                                                                                                                                                                                                                                                              |
| socket                                                 | /tmp/mysql.sock

Then I checked the socket location in my database.yml file and it was wrong:

It was wrong. After changing it to the right socket location everything worked like a charm. I hope this helps someone in the future.

Upvotes: 22

Rio Dermawan
Rio Dermawan

Reputation: 133

Just simply run

mysql server.restart

to restart the server. This fixed this issue for me.

Upvotes: 1

borgo
borgo

Reputation: 21

I had similar issue (also using Brew and also getting PID file problem) with mysql and my PHP app. It started after I updated the OSX to Mavericks, probably the system update overrided my settings. Strangely, everything regarding mysql started to work again after I recreated /etc/php.ini and set proper socket address pointing to /tmp/mysql.sock. Maybe it'll help someone googling for this.

Upvotes: 0

NM Pennypacker
NM Pennypacker

Reputation: 6942

You have to start the mysql server

mysql.server start

and I think you may be looking for

rake db:migrate

Upvotes: 13

Related Questions