Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Asked Answered
G

7

32

I am trying to run mysql client on my terminal. I have installed the latest mysql gem.

 ➜  ~ git:(master) ✗ ruby -v
    ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
    ➜  ~ git:(master) ✗ rails -v
    Rails 2.3.14
    ➜  ~ git:(master) ✗ which mysql
    mysql: aliased to nocorrect mysql
    ➜  ~ git:(master) ✗ which ruby
    /usr/bin/ruby
    ➜  ~ git:(master) ✗ which rails
    /usr/bin/rails
    ➜  ~ git:(master) ✗ gem list

*** LOCAL GEMS ***

actionmailer (2.3.14)
actionpack (2.3.14)
activerecord (2.3.14)
activeresource (2.3.14)
activesupport (2.3.14)
builder (2.1.2)
bundler (1.0.21)
capistrano (2.9.0)
capybara (0.3.9)
cgi_multipart_eof_fix (2.5.0)
childprocess (0.2.2)
columnize (0.3.4, 0.3.3)
cucumber (0.9.4)
cucumber-rails (0.3.2)
culerity (0.2.15)
daemons (1.1.4)
database_cleaner (0.6.7)
diff-lcs (1.1.3)
expertiza-authlogic (2.1.6.1)
fastercsv (1.5.4)
fastthread (1.0.7)
ffi (1.0.10, 1.0.9)
gdata (1.1.2)
gem_plugin (0.2.3)
gherkin (2.2.9)
highline (1.6.2)
hoptoad_notifier (2.4.11)
json (1.4.6)
json_pure (1.6.1)
linecache (0.46)
mime-types (1.16)
mongrel (1.1.5)
mysql (2.8.1)
mysql2 (0.3.7)
net-scp (1.0.4)
net-sftp (2.0.5)
net-ssh (2.2.1)
net-ssh-gateway (1.1.0)
nokogiri (1.5.0)
rack (1.1.2)
rack-test (0.6.1)
rails (2.3.14)
rake (0.9.2)
rbx-require-relative (0.0.5)
rdoc (3.11)
RedCloth (4.2.8)
rgl (0.4.0)
ruby-debug (0.10.4)
ruby-debug-base (0.10.4)
rubyzip (0.9.4)
selenium-webdriver (2.8.0, 2.7.0)
stream (0.5)
term-ansicolor (1.0.7, 1.0.6)

➜  expertiza git:(master) ✗ sudo su
Password:
sh-3.2# mysql -u root -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
sh-3.2# 

I am not able to get rid of the above error. I have created a mysql.sock file in /Users/HPV/expertiza/tmp/sockets. In the file I have written mysql.default_socket =/expertiza/tmp/sockets/mysql.sock.

What am I doing wrong?

Thanks!

Gargantuan answered 21/10, 2011 at 0:12 Comment(9)
It's not supposed to be a file, it's supposed to be a socket.Simply
Initially there was a empty sockets folder in /Users/HPV/expertiza/tmp/sockets. What should I do?Gargantuan
Leave it alone so it can create sockets there.Simply
Ok deleted mysql.sock. Error still persists.Gargantuan
Did you restart mysqld? Did it create a socket?Simply
It never started only. I ma stuck in the command sh-3.2# mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2). Socket folder is emptyGargantuan
If the server isn't running, mysql will definitely be unable to connect to it! You need to run the server first. (mysql is the client, mysqld is the server. You should use a script to launch/monitor the server.)Simply
sh-3.2# mysqld 111020 20:29:29 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive 111020 20:29:29 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root! 111020 20:29:29 [ERROR] Aborting 111020 20:29:29 [Note] mysqld: Shutdown completeGargantuan
Possible duplicate of Can't connect to local MySQL server through socket homebrewJugum
S
38

You need to follow the directions to install and start the server.

The command varies depending on how you installed MySQL. Try this first:

sudo /Library/StartupItems/MySQLCOM/MySQLCOM start

If that fails:

cd /usr/local/mysql
sudo ./bin/mysqld_safe
(Enter your password, if necessary)
(Press Control-Z)
bg

Simply answered 21/10, 2011 at 0:33 Comment(1)
The command which starts mysql is mysqld, which stands for "mysql daemon". If your mysql is ever not running, simply type that command into your terminal. :)Mapes
K
32

Also, if you got this error and installed mysql via Homebrew, I found that this works (though you need to change "5.6.12" to your own version):

/usr/local/Cellar/mysql/5.6.12/bin/mysql.server restart

I just created a file ~/restartMysql.sh in my home directory (with only the line above in it) so that I can just use this whenever MySQL is acting up

Keturahkeung answered 3/2, 2014 at 23:10 Comment(1)
THIS. SO MUCH THIS. Dude, I love you.Waldgrave
S
17

Run the following on the command line :

$ mysql.server start
Solemnity answered 17/11, 2015 at 5:52 Comment(1)
The following error appears: /usr/local/Cellar/[email protected]/5.7.23/bin/mysqld_safe: line 144: /usr/local/var/mysql/Victors-MacBook-Air-2.local.err: Permission deniedQualitative
S
5

this post helped did it for me, I'll rewrite the steps here (note: i'll be also writing the output of your commands.. just so that you know you're on track)

first stop the server if running:

[root@servert1 ~]# /etc/init.d/mysqld stop
Stopping MySQL: [ OK ]

run an sql dameon on a separate thread

[root@servert1 ~]# mysqld_safe --skip-grant-tables &    
[1] 13694    
[root@servert1 ~]# Starting mysqld daemon with databases from /var/lib/mysql

open a separate shell window and type

[root@servert1 ~]# mysql -u root

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.0.77 Source distribution



Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

start using mysql

mysql> use mysql; 

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A



Database changed

update the user table manually with your new password (note: feel free to type mysql> show tables; just to get a perspective on where you are)

NOTE: from MySQL 5.7 passwords are in the authenication_string table, so the command is update user set authentication_string=password('testpass') where user='root';

mysql> update user set password=PASSWORD("testpass") where User='root';

Query OK, 3 rows affected (0.05 sec)

Rows matched: 3 Changed: 3 Warnings: 0

flush privileges (i'm not sure what this privileges is all about.. but it works)

mysql> flush privileges; 

Query OK, 0 rows affected (0.04 sec)

quit

mysql> quit

Bye

stop the server

NOTE: on OS X or macOS, mysql.server is located at /usr/local/mysql/support-files/.

mysql.server stop

Shutting down MySQL
.130421 09:27:02 mysqld_safe mysqld from pid file /usr/local/var/mysql/mycomputername.local.pid ended
 SUCCESS! 
[2]-  Done                    mysqld_safe --skip-grant-tables

kill the other shell window that has the dameon running (just to make sure)

now you are good to go! try it:

[root@servert1 ~]#  mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.10 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

done!

Stomato answered 21/4, 2013 at 6:54 Comment(2)
I still get ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)Landside
At the stage of changing the root password in the user table: ERROR 1054 (42S22): Unknown column 'password' in 'field list' - from MySQL 5.7 passwords are in authenication_string, so the command is update user set authentication_string=password('your_root_pw_here') where user='root';Jargon
R
1

I hope this helps somebody. I was getting the same error, but seemingly for a much different reason than other people.

I have 2 CentOS machines.

I copied my.cnf to the new machine, not realizing that I had upgraded the old machine to MySQL 5.6, and the new machine had 5.5 installed. When I commented out the 5.6-only directives, MySQL started as expected. (and now I am running the upgrade so I can apply the massively useful innodb_buffer_pool_dump_at_shutdown and innodb_buffer_pool_load_at_startup directives)

I would suggest trying a bare minimum my.cnf. If MySQL starts up, then you've found the source of your problem.

Roseannaroseanne answered 8/6, 2015 at 3:9 Comment(0)
O
0

It looks like you need a MySQL server installed, there is install packages on mysql's site, or you can install through macports (I assume from the darwin11 line). I installed mine via ports, and the socket lives in /opt/local/var/run/mysql5/.

Opportunity answered 21/10, 2011 at 0:35 Comment(0)
S
0

In my case, I don't got tmp folder setting up right. What I end up with these steps:

1. cd /

2. ln -s private/tmp /tmp
Scout answered 27/6, 2017 at 13:25 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.