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

我有一个大问题试图连接到MySQL。 当我运行:

/usr/local/mysql/bin/mysql start 

我有以下错误:

 Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38) 

我在/var/mysql目录下有mysql.sock

/etc/my.cnf我有:

 [client] port=3306 socket=/var/mysql/mysql.sock [mysqld] port=3306 socket=/var/mysql/mysql.sock key_buffer_size=16M max_allowed_packet=8M 

并在/etc/php.ini我有:

 ; Default socket name for local MySQL connects. If empty, uses the built-in ; MySQL defaults. mysql.default_socket = /var/mysql/mysql.sock 

我使用sudo /opt/local/apache2/bin/apachectl restart启动了apache

但我仍然有错误。

否则,我不知道这是否相关,但是当我做mysql_config --sockets我得到的mysql_config --sockets

 --socket [/tmp/mysql.sock] 

如果你的文件my.cnf(通常在/ etc / mysql /文件夹中)configuration正确

 socket=/var/lib/mysql/mysql.sock 

你可以用下面的命令检查mysql是否在运行:

 mysqladmin -u root -p status 

尝试更改您的权限到MySQL文件夹。 如果你在本地工作,你可以尝试:

 sudo chmod -R 755 /var/lib/mysql/ 

为我解决了它

你确定你安装了MySQL以及MySQL服务器..

例如,要安装mySql服务器,我将使用yum或apt来安装mysql命令行工具和服务器:

 yum -y install mysql mysql-server (or apt-get install mysql mysql-server) 

启用MySQL服务:

 /sbin/chkconfig mysqld on 

启动MySQL服务器:

 /sbin/service mysqld start 

之后设置MySQL root密码:

 mysqladmin -u root password 'new-password' (with the quotes) 

我希望它有帮助。

一个快速的解决方法,为我工作:尝试使用本地IP地址(127.0.0.1)而不是mysql_connect()中的“localhost”。 这“强制”的PHP连接通过TCP / IP而不是一个unix套接字。

我得到了以下错误

 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) 

尝试了几种方法,最终通过以下方式解决了这个问题

 sudo gksu gedit /etc/mysql/my.cnf 

改性

 #bind-address = 127.0.0.1 

 bind-address = localhost 

并重新启动

 sudo /etc/init.d/mysql restart 

有效

确保你正在运行mysqld: /etc/init.d/mysqld start

为防止发生此问题,必须从命令行正常closures服务器,而不是closures服务器电源。

 shutdown -h now 

这将closures机器之前停止正在运行的服务。

基于Centos,当遇到这个问题时,另一种将其重新备份的方法是移动mysql.sock:

 mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak service mysqld start 

重新启动服务将创build一个名为mqsql.sock的新条目

另一个解决方法是编辑/etc/my.cnf并将主机包含在[client]

  [client] #password = your_password host = 127.0.0.1 port = 3306 socket = /var/run/mysql/mysql.sock 

然后重新启动mysql服务。

此解决方法已经过testing:服务器版本:5.5.25a日志源分配

从这里的许多答案可以看出,当你启动MySQL服务时,会有很多问题会导致这个错误信息。 问题是,如果只是查看相应的日志文件,MySQL通常会告诉你到底发生了什么问题。

例如,在Ubuntu上,你应该检查/var/log/syslog 。 由于许多其他的事情也可能会logging到这个文件,你可能希望使用grep来查看mysql消息,并tail只看最新的。 所有在一起,这可能看起来像:

grep mysql /var/log/syslog | tail -50

不要盲目地对你的configuration进行修改,因为有人说“这对我的系统有效”。 找出你的系统实际上是什么错误,你会得到更好的结果更快。

我有同样的问题,这是由于mysql服务器运行时更​​新mysql驱动程序造成的。 我解决它只是重新启动mysql和apache2:

sudo服务mysql停止

sudo服务mysql启动

sudo服务apache2停止

sudo服务apache2启动

如果一切正常,你刚开始看到这个错误,在你做任何事情之前,请确保你没有超出磁盘空间:

 df -h 

如果正在创buildmysql.sock的卷是100%使用的,MySql将无法创build它,这将成为此错误的原因。 所有你需要做的就是删除一些不需要的东西,比如旧的日志文件。

就我而言,我使用的是Centos 5.5。 我发现问题是因为mysql服务停止了一些如何。 所以我用这个命令启动了mysql服务:

  /etc/init.d/mysqld start 

所以…愚蠢的错误。

 sudo service mysql start 

这应该只是为你服务。 有可能你改变了一些影响mysqlconfiguration的命令。

我得到的错误,因为我正在运行MAMP和我的.sock文件是在不同的位置。 我只是添加了一个符号链接,应用程序认为它应该是指向实际的地方,它的工作就像一个魅力。

尝试使用-h(主机)和-P(端口):

mysql -h 127.0.0.1 -P 3306 -u root -p

当我为我的文件设置cron作业时,我得到了这个错误。 我改变了文件的权限为777,但它仍然没有为我工作。 最后我得到了解决办法。 可能会对别人有帮助。

试试这个命令:

mysql -h 127.0.0.1 -P 3306 -u root -p

请记住,-h表示主机 ,-p表示端口

如果您使用的是AWS(Amazon Web Services)Micro版本,那么这是一个内存问题。 当我跑了

 mysql 

从terminal它会说

 ERROR 2002 (HY000): Can't connect to local MySQL server through socket /var/run/mysqld/mysqld.sock' (111) 

所以我尝试了以下,它会失败。

 service mysqld restart 

经过多次search后,我发现你必须为MySQL创build一个交换文件来拥有足够的内存。 说明列出: http : //www.prowebdev.us/2012/05/amazon-ec2-linux-micro-swap-space.html 。

然后,我能够重新启动mysqld。

你总是可以通过使用--socket选项指定mysql.sock文件的位置来启动mysql服务器

 mysql --socket=/var/mysql/mysql.sock 

即使在my.cnf文件中的不同位置指定了套接字文件的位置,这也将起作用。

对于任何解决scheme无效的人,请尝试:

 cd /etc/mysql 

检查my.cnf是否存在

 nano my.cnf 

并确保您只有一个绑定地址,如下所示:

bind-address = 127.0.0.1

如果没有,那可能是问题,只需退出nano并保存文件即可。

service mysql start

注意,如果你没有nano(它是一个文本编辑器),只需使用apt-get install nano安装它,只需按Ctrl + X即可退出,不要忘记说Y保存并使用相同的文件)

我也发现这是一个权限问题。 我将MySQL文件与工作安装(在Debian 6 squeeze上)进行了比较,并且必须进行以下所有权更改(其中mydatabase是您拥有的任何数据库)。

所有权mysql:mysql

 chown mysql:mysql /var/lib/mysql chown mysql:mysql /var/lib/mysql/ib* chown mysql:mysql /var/lib/mysql/mydatabase chown mysql:mysql /var/lib/mysql/mydatabase/* chown mysql:mysql /var/lib/mysql/mysql/* 

所有权mysql:root

 chown mysql:root /var/lib/mysql/mysql chown mysql:root /var/run/mysqld 

所有权mysql:adm

 chown mysql:adm /var/log/mysql chown mysql:adm /var/log/mysql.err chown mysql:adm /var/log/mysql.log* 

这不是直接回答你的问题,而是它的一个子集,即使用PythonAnywhere。 在寻找解决方法时,我一直在这个问题上磕磕绊绊,所以我在这里添加它,希望它能帮助别人解决我的问题。


PythonAnywhere决定更改数据库连接主机名以提高效率和可靠性, 详情如下:

您应该使用连接到您帐户的MySQL数据库实例的正式主机名称已从mysql.server更改为您的用户 .mysql.pythonanywhere-services.com 。 这绕开了我们最近几周开始出现问题的基础设施的一部分,它应该比旧的方式更加高效和可靠。

因此,您需要将您的主机名更新为上面突出显示的值。

这个问题有很多解决scheme,但是对于我的情况,我只需要修改机器/服务器上的DATEUbuntu 16.04服务器 )。

我)检查你的服务器的date,并纠正它。

ii)运行sudo /etc/init.d/mysql restart

这应该开始。

添加

 --protocol=tcp 

到你的连接的pramaters名单为我工作。

这对我来说已经够好了

 sudo /etc/init.d/mysql restart 

我今天遇到这个问题。 这些答案都没有提供修复。 我需要执行以下命令(在这里findhttps://stackoverflow.com/a/20141146/633107 )为我的MySQL服务启动:

 sudo /etc/init.d/mysql stop cd /var/lib/mysql/ ls ib_logfile* mv ib_logfile0 ib_logfile0.bak mv ib_logfile1 ib_logfile1.bak ... etc ... /etc/init.d/mysql restart 

/var/log/mysql/error.log中的以下错误部分表明了这一点:

 140319 11:58:21 InnoDB: Completed initialization of buffer pool InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes InnoDB: than specified in the .cnf file 0 5242880 bytes! 140319 11:58:21 [ERROR] Plugin 'InnoDB' init function returned error. 140319 11:58:21 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 140319 11:58:21 [ERROR] Unknown/unsupported storage engine: InnoDB 140319 11:58:21 [ERROR] Aborting 

我也看到磁盘满错误,但只有当没有sudo运行命令。 如果权限检查失败,则会报告磁盘已满(即使您的分区甚至没有接近满)。

CentOS 7,64位。 新鲜的安装。
在我的情况下,错误是因为我没有安装正确的MySQL服务器和MySQL客户端。
使用yum ,我删除了mariadb和mysql-community版本。 我从官方的MySQL网站下载了客户端和服务器的rpm,并安装了服务器和客户端。

在安装服务器时,我看到一条消息,说明MySQL的root帐户密码存储在一个可以用sudo cat /root/.mysql_secret查看的文件中。

所以在安装客户端和服务器之后,我用命令sudo service mysql status检查了MySQL是否正在工作(我想我是在重新启动之前)并得到了结果。

MySQL正在运行(2601)[确定]

我使用.mysql_secret文件中的密码login到MySQL:
mysql -uroot -pdxM01Xfg3DXEPabpf 。 请注意, dxM01Xfg3DXEPabpf是.mysql_secret文件中提到的密码。

然后键入在mysql提示符下input以下命令来更改root的密码:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somePassword');

一切正常,从那时起。

我使用127.0.0.1而不是localhost,一切正常。 在其他情况下有什么 – 上面的错误。

 sudo service mysqld start 

为我工作,我使用Centos

在尝试启动服务器时,我也遇到了这个问题,所以这里只是说启动服务器的许多答案都不起作用。 你可以做的第一件事就是执行以下命令来查看是否有configuration错误:

 /usr/sbin/mysqld --verbose --help 1>/dev/null 

我确实有一个出现的错误:

 160816 19:24:33 [Note] /usr/sbin/mysqld (mysqld 5.5.50-0ubuntu0.14.04.1-log) starting as process 9461 ... 160816 19:24:33 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead. 160816 19:24:33 [Note] Plugin 'FEDERATED' is disabled. 160816 19:24:33 [ERROR] /usr/sbin/mysqld: unknown variable 'innodb-online-alter-log-max-size=4294967296' 160816 19:24:33 [ERROR] Aborting 

一个简单的grep -HR "innodb-online-alter-log-max-size" /etc/mysql/显示了哪个文件包含有问题的行,所以我从文件中删除了该行。

然后,检查我的/var/log/mysql/error.log文件,我有:

 InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes InnoDB: than specified in the .cnf file 0 671088640 bytes! 160816 22:46:46 [ERROR] Plugin 'InnoDB' init function returned error. 160816 22:46:46 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 160816 22:46:46 [ERROR] Unknown/unsupported storage engine: InnoDB 160816 22:46:46 [ERROR] Aborting 

基于这个问题 ,接受的解决scheme将无法正常工作,因为我甚至无法启动服务器,所以我按照其中的一些注释说删除了/var/lib/mysql/ib_logfile0/var/lib/mysql/ib_logfile1文件。

这允许服务器启动,我能够连接和执行查询,但是检查我的错误日志文件,它很快就被填满了数以万计的几行这样的:

 160816 22:52:15 InnoDB: Error: page 1415 log sequence number 82039318708 InnoDB: is in the future! Current system log sequence number 81640793100. InnoDB: Your database may be corrupt or you may have copied the InnoDB InnoDB: tablespace but not the InnoDB log files. See InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html InnoDB: for more information. 

基于这里的一个build议,为了解决这个问题,我做了一个mysqldump和所有数据库的恢复(请参阅其他几个解决scheme的链接)。

 $ mysqldump -u root -p --allow-keywords --add-drop-database --comments --hex-blob --opt --quote-names --databases db_1 db_2 db_3 db_etc > backup-all-databases.sql $ mysql -u root -p < backup-all-databases.sql 

一切似乎都按预期工作。

对我来说 – 这只是一个MySQL需要很长时间才能加载的情况。 我在一个数据库中有超过10万个表,它最终开始了,但是在这个例子中显然需要很长时间。

我有这个套接字错误,它基本上归结为MySQL没有运行的事实。 如果运行全新安装,请确保安装1)系统软件包和2)面板安装程序(mysql.prefPane)。 面板安装程序将允许您转到系统首选项并打开MySQL,然后运行实例。

请注意,在全新安装中,我需要重置计算机以使更改正常生效。 重启后,我得到一个新的实例运行,并能够打开一个连接到本地主机没有任何问题。

另外值得注意的是,我显然已经安装了以前版本的MySQL,但是已经移除了面板,这使得为mac用户运行MySQL的实例变得很容易。

这个重新安装过程的好链接: http : //www.coolestguyplanettech.com/how-to-install-php-mysql-apache-on-os-x-10-6/