我的问题开始于我无法在我的mysql安装上以root用户身份登录。我试图在没有打开密码的情况下运行mysql ......但每当我运行命令时
# mysqld_safe --skip-grant-tables &
我永远不会得到提示。我试图关注these instructions to recover the password。
屏幕看起来像这样:
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
我没有得到提示,开始输入SQL命令来重置密码。
当我按 CTRL + C 杀死它时,我收到以下消息:
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
如果我重试命令并保留足够长的时间,我会得到以下一系列消息:
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身份登录:
# 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 / -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
。但我注意到它没有提示我输入密码。是不是应该要求管理员密码?
答案 0 :(得分:208)
尝试此命令,
sudo service mysql start
答案 1 :(得分:164)
要查找系统上的所有套接字文件:
sudo find / -type s
我的Mysql服务器系统在/var/lib/mysql/mysql.sock
找到套接字的打开位置后,使用套接字文件的路径在/etc/my.cnf文件中添加或编辑该行:
socket=/var/lib/mysql/mysql.sock
有时,启动命令行可执行文件的系统启动脚本会指定标志--socket=path
。此标志可以覆盖my.cnf位置,这将导致找不到my.cnf文件指示的插座。然后,当您尝试运行mysql命令行客户端时,它将读取my.cnf以查找套接字,但由于它与服务器创建的不同,因此无法找到它。所以,除非你关心套接字所在的位置,否则只需更改my.cnf即可。
然后,停止mysqld进程。如何执行此操作因系统而异。
如果您是linux系统的超级用户,如果您不知道Mysql设置使用的具体方法,请尝试以下操作之一:
service mysqld stop
/etc/init.d/mysqld stop
mysqladmin -u root -p shutdown
pkill -9 mysqld
pgrep mysql
或ps aux | grep mysql | grep -v grep
4969
以kill -9 4969
执行此操作后,您可能希望在/var/run/mysqld/
中查找pid文件并将其删除
确保套接字上的权限是这样的,即任何用户mysqld正在运行,因为它可以读取/写入它。一个简单的测试是打开它直到完全读/写,看它是否仍然有效:
chmod 777 /var/run/mysqld/mysqld.sock
如果这样可以解决问题,您可以根据安全设置根据需要定制套接字的权限和所有权。
此外,运行mysqld进程的用户必须可以访问套接字所在的目录。
答案 2 :(得分:104)
由于多次安装mysql而发生此错误。 运行命令:
ps -A|grep mysql
使用以下方法终止该过程:
sudo pkill mysql
然后运行命令:
ps -A|grep mysqld
同样通过运行
来终止此过程sudo pkill mysqld
现在您已完全设置,只需运行以下命令:
service mysql restart
mysql -u root -p
再次使用mysql非常好
答案 3 :(得分:36)
解决方案更容易。
mysql.sock
文件所在的位置。就我而言,它位于/opt/lampp/var/mysql/mysql.sock
sudo Nautilus
mysql.sock
文件所在的位置mysqld.sock
,然后右键单击该文件并剪切它/var/run
并创建一个名为mysqld
的文件夹并输入mysqld.sock
:} /var/run/mysqld/mysqld.sock
文件
醇>
答案 4 :(得分:24)
安装后只需启动MySQL服务:
对于Ubuntu:
sudo service mysql start;
对于CentOS或RHEL:
sudo service mysqld start;
答案 5 :(得分:12)
好吧,只需复制并粘贴这些代码:这应该在终端,服务器内部,当你的mysql数据库没有正确安装时,以及当你收到这个错误时:'无法连接到本地MySQL服务器socket'/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
建立这样的链接并将其提供给系统
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
运行安全安装,指导您配置mysql所需的所有流程
/usr/bin/mysql_secure_installation
答案 6 :(得分:11)
Ubuntu上有MySQL 5.6和5.7的错误,只要MySQL服务停止或重新启动,var/run/mysqld/
就会消失。这可以防止MySQL运行。找到了这个解决方法,这不是完美的,但至少它会在停止/重启后运行:
mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/
答案 7 :(得分:11)
我遇到了同样的错误,发现它是由于软件包升级造成的,所以在重新启动系统后我解决了错误。
我认为由于sql库/ packages更新发生了错误,所以如果你正在进行一些升级,请尝试这样做:)
答案 8 :(得分:8)
这个问题有很多原因,但有时只是重新启动mysql服务器,它将解决问题。
sudo service mysql restart
答案 9 :(得分:6)
用户加载步骤的答案对我有用。
有时需要在/etc/mysql/my.cnf
添加行到客户端
[client]
password = your_mysql_root_password
port = 3306
host = 127.0.0.1
socket = /var/lib/mysql/mysql.sock
答案 10 :(得分:5)
<强>解决方案强>
最后卸载并重新安装mysql。 **
然后再次安装
完成此操作后,将使用164 MB的额外磁盘空间。
...... .......
最后你会得到这些线......
设置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(首先是每个密码u 应该使用)
输入密码:
注意:输入的密码应与安装时间相同 mysql的密码(如.root,system,admin,rahul等...)
然后输入
USE rahul_db(数据库名称);
感谢。**
答案 11 :(得分:5)
在ubuntu上使用XAMPP:
在 / var / run 目录中创建名为 mysqld 的文件夹。您可以使用命令sudo mkdir /var/run/mysqld
。
创建一个符号链接,指向XAMPP服务器启动时创建的 mysql.sock 文件。您可以使用命令sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock
。
注意: mysql.sock 文件是在服务器启动时创建的,当服务器停止时会被删除,因此有时您创建的链接可能会被破坏但只要您使用
sudo /opt/lampp/lampp start
或任何其他方式启动服务器,它就应该有效。
答案 12 :(得分:4)
如果您已安装mysqld.sock
,则可以在/var/run/mysqld
中找到mysql-server
按sudo apt-get install mysql-server
答案 13 :(得分:4)
也许有人面临这个问题。我在 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
找到您的套接字文件,在我的情况下是/run/mysqld/mysqld.sock
所以,我刚刚在tmp
目录中创建了这个文件的链接。
sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
答案 14 :(得分:4)
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
这对我有用
答案 15 :(得分:4)
这已经提到了几次,但这对我来说很有效:
service mysql restart
答案 16 :(得分:3)
为什么会出现此错误
我收到了mysql库的新更新,因此在得到这些错误之后,我更新了Kubuntu OS。
我尝试过的命令以及如何修复它。
MySql服务器正在正确运行,但是当我尝试连接其提供的内容
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'.
我检查了/var/run/mysqld/mysqld.sock'.
此目录。
我的文件不存在。
我也尝试连接这些命令,但对我没有用。
mysql -h 127.0.0.1 -P 3306 -u root -p
sudo service mysql start
浪费了大约 2小时之后,我找到了解决方法
sudo apt-get clean
sudo apt-get update
sudo apt-get upgrade -f
之后,一切对我来说都是固定的。
答案 17 :(得分:3)
如果你的系统上有很多数据库和表,如果你在my.cnf中设置了innodb_file_per_table
,那么你的mysql服务器可能已用完已打开的对象/文件(或者更确切地说是这些对象)
使用
open-files-limit = 2048
并重启mysql。 当根本没有创建套接字时,这种方法可能有所帮助,但实际上这可能不是真正的问题,存在潜在的问题。
答案 18 :(得分:3)
在我的情况下,两个mysqld进程正在运行.. 使用了杀死可选进程 pkill -9 mysqld
答案 19 :(得分:2)
我认为您的MySQL服务器尚未启动。因此,请使用以下命令之一启动服务器。
#services mysql start
或
#/etc/init.d/mysql start
答案 20 :(得分:2)
我刚刚在Ubuntu 14.10上遇到过这个问题
转而认为mysql-server
已不再安装(不知何故已被删除)但我无法安装它,因为存在一些破坏的包和依赖性问题/冲突。
最后我不得不重新安装mysql
sudo apt-get remove mysql-client
sudo apt-get install mysql-server
答案 21 :(得分:2)
我在Ubuntu 16.04 https://askubuntu.com/questions/172514/how-do-i-uninstall-mysql
中卸载了mysql我重新安装了mysql https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-16-04
这似乎有效。
答案 22 :(得分:1)
你必须安装mysql-server
apt install mysql-server
答案 23 :(得分:1)
我在CentOS VPS上遇到过类似的问题。如果MySQL在启动后无法启动或不断崩溃,请尝试以下步骤:
1)找到my.cnf文件(我的位于/etc/my.cnf)并添加以下行:
innodb_force_recovery = X
用1到6的数字替换X,从1开始,然后在MySQL无法启动时递增。设置为4,5或6可以删除您的数据,因此请小心并在之前阅读http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html。
2)重启MySQL服务。此时只会运行SELECT,这是正常的。
3)使用mysqldump逐个转储所有数据库/模式,不要压缩转储,因为无论如何你必须在以后解压缩它们。
4)仅移动(或删除!)/ var / lib / mysql中的bd目录,保留根目录中的各个文件。
5)停止MySQL,然后取消注释1)中添加的行。启动MySQL。
6)恢复3)中倾倒的所有bd。
祝你好运!答案 24 :(得分:1)
在终端提示下尝试以下操作:
sudo mysql
一旦允许您进入,就可以创建一个新用户,并在他们需要访问的特定数据库上授予您想要的特权。
MySQL 5.7进行了一些更改,默认情况下,root用户使用auth_socket插件(与mysql_native_password相对)来保护帐户免遭黑客攻击。您可以通过将插件字段设置为root来覆盖此设置,但是除非您有充分的理由,否则您可能不应该绕过保护措施。无论如何,尤其是sudo mysql
比mysql -u root -p
容易的时候。
我从Raspberry Pi帮助站点中找到了所有地方的此信息。在Lubuntu 18.04使我烦恼了两个小时之后,他像魅力一样工作。
答案 25 :(得分:1)
我还会检查mysql配置。我在使用自己的服务器时遇到了这个问题,但是我的机器有点过于草率和错误配置了innodb_buffer_pool_size。
innodb_buffer_pool_size = 4096M
它通常可以运行到2048年,但我想我没有必要的内存来支持4场演出。
我想这也可能发生在其他mysql配置设置中。
答案 26 :(得分:1)
我在Ubuntu的虚拟机上运行MySQL,所以发生的事情是当我重新启动主机和VM时,IP已经改变了。我已将mysql配置为在IP 192.168.0.5上运行,现在由于动态分配IP,我的新IP为192.168.0.8
如果您遇到同样的问题,只需使用命令ifconfig
检查您的IP。
使用命令cat /etc/mysql/my.cnf | grep bind-address
如果两个IP相同,则重新安装mysql服务器
如果没有,请使用nano,vi,vim或您喜欢的任何内容在/etc/network/interfaces
中更改您的IP。
我更喜欢sudo nano /etc/network/interfaces
并输入以下内容
auto eth0
iface eth0 inet static
address 192.168.0.5
netmask 255.255.255.0
保存interfaces文件,重新启动界面sudo ifdown eth0
&amp;&amp; sudo ifup eth0
替换&#34; eth0&#34;使用您的网络接口
重新启动MySQL sudo service mysql stop
,然后重启sudo service mysql start
如果你遇到与我相同的问题,你很高兴!
答案 27 :(得分:1)
将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
答案 28 :(得分:0)
我在Ubuntu上使用XAMPP。通过终端连接数据库时发现此错误。我无需任何配置即可解决该问题,因为XAMPP中的默认套接字文件路径写在“ /opt/lampp/etc/my.cnf”中,如下所示:
[client]
#password = your_password
port = 3306
socket = /opt/lampp/var/mysql/mysql.sock
现在您只需在终端上通过mysql命令将此套接字路径参数提供即可进行连接:
mysql -u root --socket /opt/lampp/var/mysql/mysql.sock
并且无需任何配置即可完成
。如果您不想每次都键入套接字路径,请通过“ /var/run/mysqld/mysqld.sock”更改my.cnf中的默认路径。提供权限并重新启动mysql服务器。
答案 29 :(得分:0)
我的情况是/ etc /目录中的mysql重命名为mysql_bk,只需复制mysql_bk
sudo cp -r /etc/mysql_bk/ /etc/mysql/
然后
service mysql restart
答案 30 :(得分:0)
与Ubuntu 18.04相同
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
/run/mysqld/
下⋊> / ll /var/run
lrwxrwxrwx 1 root root 4 Nov 1 2018 /var/run -> /run/
hmmm ...这是否意味着符号链接不起作用?太奇怪了...
答案 31 :(得分:0)
只是与你们分享,我遇到了同样的问题并使用以下命令解决了
<块引用>sudo ln -s /var/lib/mysql/mysql.sock /var/run/mysqld/mysqld.sock
我从 my.cnf 和错误中硬链接了两个位置
我得到了这个答案 enter link description here
答案 32 :(得分:0)
我的解决方案;
Ubuntu 18.04(WSL)
/etc/mysql/my.cnf
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
/etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
我更改了端口。对我有用。您可以写另一个端口。示例3355
答案 33 :(得分:0)
请确保您无法访问的套接字文件路径与“ /var/run/mysqld/mysqld.sock”相同,否则请将该路径更改为您的路径。 停止mysqld
$ sudo /etc/init.d/mysqld stop
如果进程仍在运行;
$ sudo pkill -9 mysqld
删除要在其中创建套接字的mysql目录。对我来说,它不允许删除,所以我不得不强行删除。
$ sudo mkdir -p /var/run/mysqld
将所有权设置为目录
$ sudo chown mysql:mysql /var/run/mysqld
启动mysql
$ sudo /etc/init.d/mysql start
尝试连接mysql
$ sudo mysql -u dbuser -p
答案 34 :(得分:0)
我遇到了完全相同的问题。经过一个小时的努力,我发现了一种无需重新安装mysql-common,mysql-client,mysql-server即可纠正它的方法。
首先,转到“ / var / run / mysqld”。您会发现mysql.sock不存在。只需删除整个mysqld目录并重新创建它并提供必要的特权即可。
# rm -rf /var/run/mysqld && mkdir /var/run/mysqld && chown mysql /var/run/mysqld/
现在,完全杀死mysql进程。即使在关闭服务后,运行“ /etc/init.d/mysql status”命令时,也可能会显示“正在等待页面清理程序”。
要完全关闭该服务,请使用
# pkill -9 mysqld
该进程被终止后,尝试使用重新启动
# /etc/init.d/mysql start
您将看到它很好用!而且也不会停止它。
答案 35 :(得分:0)
有时只是您的服务器上没有足够的空间,只是释放了一些空间(例如清除日志文件),然后启动mysql:
/etc/init.d/mysql start
答案 36 :(得分:0)
首先创建dir / var / run / mysqld
使用命令:
mkdir -p /var/run/mysqld
然后在目录中添加约束
chown mysql:mysql /var/run/mysqld
尝试之后
mysql -u root
答案 37 :(得分:0)
对于那些通过 Vitess 使用 MySql 的人。
由于传递给 ;
的语法错误(忘记将 init_db.sql
添加到 SQL 命令的末尾),我在 vttablet 组件中收到此错误,该错误被指定为 { {3}} 入门example:
apiVersion: v1
kind: Secret
metadata:
name: my-cluster-config
type: Opaque
stringData:
users.json: |
{
"user": [{
"UserData": "user",
"Password": "pass"
}]
}
init_db.sql: |
# This file is executed immediately after mysql_install_db,
# to initialize a fresh data directory.
CREATE DATABASE IF NOT EXISTS my_db <--- No ';' at the end
完整的错误日志:
<块引用>TabletManager.ReplicationStatus()(on zone1from) 错误: net.Dial(/vt/socket/mysql.sock) 到本地服务器失败:dial unix /vt/socket/mysql.sock: 连接: 没有这样的文件或目录 (errno 2002)
答案 38 :(得分:0)
当MariaDB启动时创建mysql.sock文件,并在MariaDB关闭时删除。如果MariaDB没有运行,它就不会存在。 也许你没有安装MariaDB。 您可以遵循以下说明: https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 BEST
答案 39 :(得分:0)
在archlinux上我遇到了这个错误,问题是mysqld
- 服务没有运行。
但是我无法按照Archlinux文档中的说明使用systemctl start mysqld
启用mysql-service。我认为错误就像是
未找到mysqld.service
我首先需要重启系统。
然后我再次输入命令(并输入systemctl enable mysqld
),现在mysql
能够找到创建的mysql.sock
。
答案 40 :(得分:0)
当我在digitalocean上调整Droplet的大小时,我遇到了这种类型的问题。我升级了mysql版本并为我工作。这是我应用的教程 - https://serverpilot.io/community/articles/how-to-upgrade-mysql-5.5-to-5.6-on-ubuntu-14.04.html
答案 41 :(得分:0)
在我的情况下,问题是/etc/mysql/my.cnf中的绑定地址,然后:
nano /etc/mysql/my.cnf
搜索绑定地址并删除特定的主机ip(不是127.0.0.1)
答案 42 :(得分:0)
我尝试了几乎所有列出的解决方案,直到我重新启动机器然后在我发出命令&#34; service mysql restart&#34;时重新启动mysql服务器时,没有一个能为我工作。
答案 43 :(得分:-1)
使用mysql配置找到my.cnf文件我的是/etc/mysql/my.cnf (相应地更改套接字的位置)
port = 3306
socket = /tmp/mysql.sock
以下是某些特定计划的条目 以下值假设您至少有32M ram
这正式名称为[safe_mysqld]。目前两个版本都已解析。
[mysqld_safe]
socket = /tmp/mysql.sock
nice = 0
答案 44 :(得分:-1)
错误:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
有时它是由于mysql服务器出现故障时,在实时服务器中我认为你应该重新启动服务器而且在localhost中你需要重新启动mysql服务器。
答案 45 :(得分:-1)
此解决方案可以帮助其他人,有时修复非常简单。
在你的实时环境中重启mysql server和apache
sudo service mysql restart
sudo apache services restart
这是安装插件或执行任何数据库命令时的常见问题。
答案 46 :(得分:-1)
在lampp中我认识到它不能识别mysql命令。 试试
sudo /opt/lampp/bin/mysql
它会打开你可以与数据库通信的mysql终端..