无法通过套接字'/tmp/mysql.sock' (2) 连接到本地MySQL服务器

32

我正在尝试在终端上运行mysql客户端。我已经安装了最新的mysql宝石。

 ➜  ~ 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# 

我无法解决上述错误。我已经在/Users/HPV/expertiza/tmp/sockets中创建了一个mysql.sock文件,并在该文件中写入了mysql.default_socket =/expertiza/tmp/sockets/mysql.sock

我做错了什么?

谢谢!


它不应该是一个文件,而应该是一个套接字。 - David Schwartz
最初,在/Users/HPV/expertiza/tmp/sockets目录下有一个空的套接字文件夹。我该怎么办? - Ava
好的,已删除mysql.sock文件。错误仍然存在。 - Ava
你重启了mysqld吗?它创建了一个socket吗? - David Schwartz
`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] Aborting111020 20:29:29 [Note] mysqld: Shutdown complete` - Ava
显示剩余4条评论
7个回答

38

您需要按照说明安装并启动服务器。

命令的具体操作因MySQL的安装方式而异。请先尝试以下命令:

sudo /Library/StartupItems/MySQLCOM/MySQLCOM start

如果失败,请尝试以下命令:

cd /usr/local/mysql
sudo ./bin/mysqld_safe
(如有必要,请输入密码)
(按Control-Z键)
bg


6
用于启动 MySQL 的命令是 mysqld,其代表 "MySQL 守护进程"。如果 MySQL 没有运行,只需在终端中键入该命令即可。 :) - mareoraft

32

另外,如果您遇到了这个错误并通过Homebrew安装了mysql,我发现这样做是有效的(但您需要将“5.6.12”更改为您自己的版本):

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

我在我的主目录中创建了一个文件~/restartMysql.sh(只有以上一行),这样每当MySQL出现问题时,我就可以使用它。


7
非常同意。伙计,我爱你。 - Andrew Luhring

17

在命令行上运行以下命令:

$ mysql.server start

出现以下错误:/usr/local/Cellar/mysql@5.7/5.7.23/bin/mysqld_safe: line 144: /usr/local/var/mysql/Victors-MacBook-Air-2.local.err: Permission denied - Victor

5

这篇帖子对我很有帮助,我会在这里重写步骤(注意:我也将编写命令的输出..这样你就知道自己在正确的轨道上)

如果服务器正在运行,请先停止:

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

在单独的线程上运行SQL守护程序。
[root@servert1 ~]# mysqld_safe --skip-grant-tables &    
[1] 13694    
[root@servert1 ~]# Starting mysqld daemon with databases from /var/lib/mysql

打开一个单独的shell窗口并输入
[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.

开始使用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

请手动更新user表格中的密码(注意:您可以输入mysql> show tables;以了解当前所在位置)

注意:MySQL 5.7以后,密码储存在authenication_string表格中,因此命令应该是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

刷新权限(我不确定这个权限具体是什么,但它起作用)

mysql> flush privileges; 

Query OK, 0 rows affected (0.04 sec)

退出

mysql> quit

Bye

停止服务器

注意:在OS X或macOS上,mysql.server位于/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

关闭其他正在运行守护进程的终端窗口(仅为确保)

现在可以开始使用了!尝试一下吧:

[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> 

完成!


我仍然收到ERROR 1045 (28000):用户'root'@'localhost'被拒绝访问(未使用密码)。 - tan
在更改用户表中的根密码阶段:ERROR 1054 (42S22):'field list'中未知列'password' - 从MySQL 5.7开始,密码存储在authentication_string中,因此命令是update user set authentication_string=password('your_root_pw_here') where user='root'; - Dave Everitt

1
我希望这能帮助到某些人。我也遇到了同样的错误,但似乎原因与其他人不同。
我有两台CentOS机器。
我将my.cnf复制到新机器上,没有意识到我已经将旧机器升级到MySQL 5.6,而新机器安装的是5.5。当我注释掉只适用于5.6的指令时,MySQL如预期般启动了。(现在我正在运行升级,以便应用极其有用的innodb_buffer_pool_dump_at_shutdown和innodb_buffer_pool_load_at_startup指令)
我建议尝试最简my.cnf。如果MySQL启动了,那么你就找到了问题的源头。

0

看起来你需要安装一个MySQL服务器,可以在mysql的网站上找到安装包,或者通过macports安装(我假设是从darwin11行)。 我通过端口安装了我的,套接字位于/opt/local/var/run/mysql5/。


0
在我的情况下,我没有正确设置临时文件夹。最终我通过以下步骤解决了这个问题:
1. cd /

2. ln -s private/tmp /tmp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接