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

Can';t通过套接字连接到本地MySQL服务器'/var/mysql/mysql.sock';(38),mysql,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 [my

我在尝试连接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\u config--sockets
时,我得到

--socket         [/tmp/mysql.sock]
如果您的文件my.cnf(通常位于/etc/mysql/文件夹中)正确配置为

socket=/var/lib/mysql/mysql.sock
您可以使用以下命令检查mysql是否正在运行:

mysqladmin -u root -p status
尝试更改您对mysql文件夹的权限。如果您在本地工作,您可以尝试:

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

这为我解决了这个问题

一个对我有效的快速解决方法:尝试在mysql_connect()中使用本地ip地址(127.0.0.1)而不是“localhost”。这将“强制”php通过TCP/IP而不是unix套接字进行连接。

确保您正在运行mysqld:
/etc/init.d/mysql start
是否确实安装了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根密码:

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

我希望它能有所帮助。

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

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

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

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

请注意,在新安装时,我需要重置计算机以使更改正确生效。重新启动后,我运行了一个新实例,并且能够毫无问题地打开到本地主机的连接

同样值得注意的是,我显然已经安装了MySQL的早期版本,但是已经删除了面板,这使得为mac用户运行MySQL的实例变得很容易


此重新安装过程的一个好链接:

我收到错误,因为我正在运行MAMP,而我的.sock文件位于不同的位置。我刚刚添加了一个符号链接,应用程序认为它应该指向它实际所在的位置,它就像一个符咒一样工作

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

然后重新开始

sudo /etc/init.d/mysql restart
它起作用了

添加

--protocol=tcp 

连接到为我工作的pramater列表。

另一个解决方法是编辑/etc/my.cnf,并在[client]部分包含host

 [client]
 #password       = your_password
 host            = 127.0.0.1
 port            = 3306
 socket          = /var/run/mysql/mysql.sock
然后重新启动mysql服务


此解决方案在:服务器版本:5.5.25a-log源代码分发版中进行了测试

在我的示例中,我使用的是Centos 5.5。我发现问题是因为mysql服务在某种程度上被停止了。 因此,我使用以下命令启动了mysql服务:

 /etc/init.d/mysqld start

所以。。愚蠢的错误

我也遇到了同样的问题,这是由于mysql服务器运行时更新了mysql驱动程序造成的。 我修复了它,只需重新启动mysql和apache2:

sudo服务mysql停止

sudo服务mysql启动

sudo服务apache2站

sudo服务apache2启动


我还发现这是一个权限问题。我将MySQL文件与正在运行的安装(都在Debian 6上)进行了比较,并不得不进行以下所有权更改(其中
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* 

这对我来说已经足够好了

sudo /etc/init.d/mysql restart
如果您使用的是AWS(AmazonWebServices)微版本,那么这是一个内存问题。当我跑的时候

mysql
从终点站,它会说

ERROR 2002 (HY000): Can't connect to local MySQL server through socket /var/run/mysqld/mysqld.sock' (111)
所以我尝试了下面的方法,结果失败了

service mysqld restart
经过多次搜索,我发现您必须为MySQL创建一个交换文件以获得足够的内存。已列出说明:


然后,我能够重新启动mysqld

为了防止问题发生,您必须从命令行正常关闭服务器,而不是关闭服务器电源

shutdown -h now
这将在关闭机器电源之前停止运行的服务

基于Centos,当您遇到此问题时,另一种方法是移动mysql.sock以使其重新备份:

mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak

service mysqld start

重新启动服务将创建一个名为mqsql.sock的新条目,我今天遇到了这个问题。这些答案都没有解决问题。为了启动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的情况下运行命令时。如果权限检查失败,它会报告磁盘已满(即使您的分区尚未接近满)。

如果一切正常,并且您刚刚开始看到此错误,在执行任何其他操作之前,请确保您没有磁盘空间不足:

df -h

如果正在创建mysql.sock的卷的使用率为100%,mysql将无法创建该卷,这将导致此错误。您只需删除一些不需要的内容,如旧日志文件。

CentOS 7,64位。新安装。
在我的例子中,错误是因为我没有安装正确的MySQL服务器和MySQL客户端。
使用
yum
,我删除了
mariadb
和mys
df -h
cd /etc/mysql
nano my.cnf
sudo service mysql start
sudo service mysqld start
/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
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
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.
$ 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