错误:'无法通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock'(2)'
我的问题开始,我不能以rootlogin到我的MySQL安装。 我试图运行没有密码打开mysql …但是每当我运行该命令:
# mysqld_safe --skip-grant-tables &
我永远不会得到及时的回应…(我试图按照这里的说明: http : //www.cyberciti.biz/tips/recover-mysql-root-password.html )屏幕看起来像这样:
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables 120816 11:40:53 mysqld_safe Logging to syslog. 120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
我没有得到提示开始inputsql命令重置密码。
当我通过CTRL + C杀死它时,我得到以下消息:
错误:'无法通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock'(2)'
检查mysqld是否正在运行,并且套接字'/var/run/mysqld/mysqld.sock'存在!
如果我重试命令并保留足够长的时间,我会得到以下一系列消息:
root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog. 120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended [1]+ Done mysqld_safe --skip-grant-tables root@jj-SFF-PC:/run/mysqld#
但是,如果我尝试以root身份login,请执行以下操作:
# mysql -u root
我收到以下错误信息:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
我检查和/var/run/mysqld/mysqld.sock
文件不存在。 该文件夹,但不是文件。
另外,我不知道如果这有帮助,但我find了一个find / -name mysqld
,它提出:
/var/run/mysqld - folder /usr/sbin/mysqld - file /run/mysqld - folder
我只是新的Linux和MySQL,所以我不知道这是否正常。 但我包括这个信息,以防万一它帮助…
**我终于决定卸载并重新安装MySQL。 **
apt-get remove mysql-server apt-get remove mysql-client apt-get remove mysql-common apt-get remove phpmyadmin
再次以上述相同的顺序重新安装所有软件包,在phpmyadmin安装过程中,它给了我同样的错误 –
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
所以我再次尝试卸载/重新安装。 这一次,我卸载软件包后,我也手动将所有的mysql文件和目录重命名为mysql.bad
在各自的位置。
/var/lib/mysql /var/lib/mysql/mysql /var/log/mysql /usr/lib/perl5/DBD/mysql /usr/lib/perl5/auto/DBD/mysql /usr/lib/mysql /usr/bin/mysql /usr/share/mysql /usr/share/dbconfig-common/internal/mysql /etc/init.d/mysql /etc/apparmor.d/abstractions/mysql /etc/mysql
然后我试着重新安装mysql-server
, mysql-client
。 但是我注意到它不会提示我input密码。 是不是应该要求pipe理员密码?
要在您的系统上运行find所有套接字文件:
sudo find / -type s
我的Mysql服务器系统在/var/lib/mysql/mysql.sock
打开了套接字
一旦find套接字被打开的位置,使用套接字文件的path添加或编辑该行到/etc/my.cnf文件中:
socket=/var/lib/mysql/mysql.sock
有时启动命令行可执行文件的系统启动脚本指定一个标志--socket=path
。 这个标志可以覆盖my.cnf的位置,这会导致在my.cnf文件指示的位置找不到套接字。 然后当你尝试运行mysql命令行客户端时,它将读取my.cnf来查找套接字,但是它不会find它,因为它与服务器创build的地方不同。 所以,除非你关心套接字所在的位置,只要改变my.cnf来匹配就可以了。
然后,停止mysqld进程。 你如何做到这一点将因系统而异。
如果您是Linux系统中的超级用户,如果您不知道您的Mysql安装程序使用的特定方法,请尝试以下方法之一:
-
service mysqld stop
-
/etc/init.d/mysqld stop
-
mysqladmin -u root -p shutdown
- 有些系统没有设置好停止mysql的优雅方法(或者由于某种原因,mysql没有响应),你可以强制终止mysql:
- 一步:
pkill -9 mysqld
- 两步(最不喜欢):
- 使用
pgrep mysql
或ps aux | grep mysql | grep -v grep
查找mysql的进程IDps aux | grep mysql | grep -v grep
- 假设进程ID是
4969
以kill -9 4969
结束
- 使用
- 一步:
当你这样做后,你可能想在/var/run/mysqld/
查找一个pid文件并将其删除
确保您的套接字上的权限是这样的,无论用户mysqld正在运行,可以读/写它。 一个简单的testing是将其打开到完整的读/写,看看它是否仍然有效:
chmod 777 /var/run/mysqld/mysqld.sock
如果解决了这个问题,则可以根据您的安全设置根据需要定制套接字的权限和所有权。
另外,运行mysqld进程的用户必须能够访问套接字所在的目录。
试试这个命令,
sudo service mysql start
这个错误是由于多次安装的mysql造成的。 运行命令:
ps -A|grep mysql
通过使用以下方法杀死进程:
sudo pkill mysql
然后运行命令:
ps -A|grep mysqld
也通过运行杀死这个过程:
sudo pkill mysqld
现在你已经完全设置好了,只需运行下面的命令:
service mysql restart mysql -u root -p
有很好的工作再次
解决scheme更容易。
- 首先,您必须在
mysql.sock
文件所在的位置(在“sudo find / -type s”中)findterminal。 在我的情况是在/opt/lampp/var/mysql/mysql.sock
- 启动terminal并发行
sudo Nautilus
这将以超级用户权限启动您的文件pipe理器 - 从Nautilus导航到您的
mysql.sock
文件所在的位置 - 右键单击文件并select“ build立链接”
- 将链接文件重命名为
mysqld.sock
然后右键单击该文件并将其剪下 - 转到
/var/run
并创build一个名为mysqld
的文件夹并input它 - 现在右键单击并粘贴链接文件
- 瞧! 您现在将在
/var/run/mysqld/mysqld.sock
有一个mysqld.sock
文件:)
只需要安装后启动MySQL服务:
对于Ubuntu:
sudo service mysql start;
对于CentOS或RHEL:
sudo service mysqld start;
我面临同样的错误,发现这是由于包的升级,所以重新启动我的系统后,我解决了错误。
我认为,由于SQL库/包更新发生错误,所以试试这个,如果你正在做一些升级:)
好吧,只需复制并粘贴这些代码:这应该是在terminal,服务器内,当你的MySQL数据库没有正确安装,当你得到这个错误:'不能连接到本地MySQL服务器通过套接字/ var / run / mysqld / mysqld.sock'(2)'。
停止MySql
sudo /etc/init.d/mysqld stop
重新启动它或启动它
sudo /etc/init.d/mysqld restart or sudo /etc/init.d/mysqld start
build立一个这样的链接,并将其交给系统
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
运行一个安全的安装,指导您configurationmysql所需的所有过程
/usr/bin/mysql_secure_installation
这个问题有很多原因,但有时只是重新启动mysql服务器,它将解决这个问题。
sudo service mysql restart
在MySQL 5.6和5.7上有一个bug,当MySQL服务停止或重新启动时, var/run/mysqld/
将会消失。 这可以防止MySQL运行。 发现这个解决方法,这是不完美的,但至less它停止/重新启动后运行:
mkdir /var/run/mysqld/ chown mysqld /var/run/mysqld/
用户加载步骤的答案对我有效。 有时候需要编辑/etc/mysql/my.cnf
的文件,把行添加到客户端
[client] password = your_mysql_root_password port = 3306 host = 127.0.0.1 socket = /var/lib/mysql/mysql.sock
*错误:'无法通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock'(2)'
解决scheme
最后卸载并重新安装mysql。 **
- sudo apt-get删除mysql-server
- sudo apt-get删除mysql-client
- sudo apt-get删除mysql-common
- sudo apt-get删除phpmyadmin
然后再次安装
- sudo apt-get install mysql-server-5.6
完成此操作后,将使用164 MB的额外磁盘空间。
- 你想继续吗? [Y / n]是按YES完成安装
…… …….
-
最后你会得到这些线….
设置libhtml-template-perl(2.95-1)…
设置mysql-common-5.6(5.6.16-1〜exp1)…处理libc-bin的触发器(2.19-0ubuntu6)处理ureadahead的触发器(0.100.0-16)…
-
接着
root @ ubuntu1404:〜#mysql -u root -p(对于每个密码,首先你应该使用)
-
input密码:
-
注意:input的密码应该与mysql的安装时密码相同(如.root,system,admin,rahul等)
然后键入
-
使用rahul_db(数据库名称);
谢谢。**
也许有人面临这个问题。 我在Ubuntu 14上使用Mysql Workbench ,并得到这个错误。
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect
通过运行sudo find / -type s
find你的socket文件,在我的情况下是/run/mysqld/mysqld.sock
所以,我只是在tmp
目录中创build了一个到这个文件的链接。
sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
我在Ubuntu 14.10上遇到了这个问题
发现mysql-server
不再安装(不知何故它已被删除),但我不能安装它,因为有一些破损的包和依赖性问题/冲突。
最后我不得不重新安装MySQL
sudo apt-get remove mysql-client sudo apt-get install mysql-server
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
在/etc/my.cnf
添加以下行:
[client] socket=/var/lib/mysql/mysql.sock <= this path should be also same as is[mysqld]
然后重新启动服务: service mysql restart
这对我工作
你可以在/var/run/mysqld
findmysqld.sock
,如果你已经用sudo apt-get install mysql-server
将host
更改为127.0.0.1
为我工作。
编辑/etc/mysql/my.cnf
的文件并将下面提到的行添加到client
[client] port = 3306 host = 127.0.0.1 socket = /var/lib/mysql/mysql.sock
完成之后。 执行以下命令。
sudo service mysql start
我也会检查mysqlconfiguration。 我用自己的服务器遇到了这个问题,但是我的机器的innodb_buffer_pool_size太仓促,错误。
innodb_buffer_pool_size = 4096M
它通常运行良好到2048年,但我想我没有必要的内存来支持4演出。
我想这也可能发生在其他的MySQLconfiguration设置。
这已经提到了几次,但是这对我来说立即奏效:
服务mysql重启
在我的情况下,两个mysqld进程正在运行..通过使用pkill -9 mysqld杀死可选进程
如果你的系统上有很多的数据库和表,并且如果你在innodb_file_per_table
设置了innodb_file_per_table
,那么你的mysql服务器可能已经用完了打开的对象/文件(或者这些对象的描述符)。设置一个新的max数字与
open-files-limit = 2048
并重新启动mysql。 这种方法可能有助于在完全不创build套接字的情况下,但实际上这可能不是真正的问题,存在根本的问题。
我在Ubuntu的虚拟机上运行我的MySQL,所以发生了什么事情,当我重新启动我的主机和虚拟机,IP已经改变。 我configuration了mysql在IP 192.168.0.5上运行,现在由于IP的dynamic分配,我的新IP是192.168.0.8
如果你有同样的问题,只需使用ifconfig
命令检查你的ip。
用cat /etc/mysql/my.cnf | grep bind-address
命令检查你的MySQL绑定 cat /etc/mysql/my.cnf | grep bind-address
如果两个IP都是相同的,那么重新安装你的mysql服务器
如果没有,那么使用nano,vi,vim或者你喜欢的任何东西来改变你在/etc/network/interfaces
IP地址。
我更喜欢sudo nano /etc/network/interfaces
并input以下内容
auto eth0 iface eth0 inet static address 192.168.0.5 netmask 255.255.255.0
保存interfaces文件,重启你的界面sudo ifdown eth0
&& sudo ifup eth0
用你的networking接口replace“eth0”
重新启动MySQL sudo service mysql stop
然后sudo service mysql start
如果你有和我一样的问题,你很好走!
在archlinux我遇到了这个错误,问题是mysqld
-service没有运行。
但是,我无法按照Archlinux文档中的说明,使用systemctl start mysqld
启用mysql服务。 我认为这个错误是类似的
找不到mysqld.service
我首先需要重新启动系统。
然后我再次input命令(并inputsystemctl enable mysqld
),现在mysql
能够find创build的mysql.sock
。
当我在digitalocean上调整液滴时,遇到这种types的问题。 我有升级的MySQL版本,为我工作。 这是我应用的教程 – https://serverpilot.io/community/articles/how-to-upgrade-mysql-5.5-to-5.6-on-ubuntu-14.04.html
我尝试了几乎所有列出的解决scheme,没有为我工作,直到我重新启动机器,然后重新启动mysql服务器,当我发出命令“服务mysql重新启动”。
在我的情况下,问题是/etc/mysql/my.cnf中的绑定地址,然后:
nano /etc/mysql/my.cnf
search绑定地址,并删除特定的主机IP(不是127.0.0.1)
我在CentOS VPS上遇到了类似的问题。 如果MySQL启动后无法启动或崩溃,请尝试以下步骤:
1)findmy.cnf文件(我的文件位于/etc/my.cnf)并添加:
innodb_force_recovery = X
用1到6的数字replaceX,从1开始,然后递增,如果MySQL不会启动。 设置为4,5或6可以删除你的数据,所以要小心,并阅读http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html之前。;
2)重新启动MySQL服务。 只有select将运行,这是正常的。
3)将所有的数据库/模式一个一个的dump到mysqldump中,不要压缩转储,因为以后不得不解压缩它们。
4)移动(或删除!)只有在/ var / lib / mysql里面的bd的目录,保存个别文件在根目录下。
5)停止MySQL,然后取消注释1)中添加的行。 启动MySQL。
6)恢复3)中所有的BD。
祝你好运!
mysql.sock文件在MariaDB启动时创build,当MariaDBclosures时被删除。 如果MariaDB没有运行,它将不存在。 也许你没有安装MariaDB。 您可以按照以下说明进行操作: https ://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 BEST
我在Ubuntu 16.04中卸载了mysql https://askubuntu.com/questions/172514/how-do-i-uninstall-mysql
我重新安装了mysql https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-16-04
这似乎工作。
这个解决scheme可以帮助别人,有时修复很简单。
在你的环境中重新启动mysql服务器和apache
sudo service mysql restart sudo apache services restart
这是安装插件或执行任何数据库命令时的常见问题。
在lampp中,我认识到它不能识别mysql命令。 尝试
sudo /opt/lampp/bin/mysql
它会打开你可以与数据库进行通信的mysqlterminal。