我的问题开始于我无法在我的 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
。但我注意到它不会提示我输入密码。不是应该要求管理员密码吗?
/var/run/mysqld/mysqld.sock
。您链接的问题有该文件。
试试这个命令,
sudo service mysql start
要查找系统上的所有套接字文件,请运行:
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 设置使用的具体方法,请尝试以下方法之一:
服务 mysqld 停止
/etc/init.d/mysqld 停止
mysqladmin -u root -p 关闭
某些系统没有设置为具有停止 mysql 的优雅方式(或由于某种原因 mysql 没有响应),您可以使用以下任一方法强制终止 mysql:一步:pkill -9 mysqld 两步(最不推荐):找到mysql 的进程 id 与 pgrep mysql 或 ps aux | grep mysql | grep -v grep 假设进程 id 为 4969 以 kill -9 4969 终止
一步:pkill -9 mysqld
两步(最不推荐):使用 pgrep mysql 或 ps aux | 查找 mysql 的进程 ID grep mysql | grep -v grep 假设进程 id 为 4969 以 kill -9 4969 终止
使用 pgrep mysql 或 ps aux | 查找 mysql 的进程 ID grep mysql | grep -v grep
假设进程 id 为 4969 以 kill -9 4969 终止
完成此操作后,您可能希望在 /var/run/mysqld/
中查找 pid 文件并将其删除
确保您的套接字上的权限使得任何运行 mysqld 的用户都可以读取/写入它。一个简单的测试是打开它以完全读/写,看看它是否仍然有效:
chmod 777 /var/run/mysqld/mysqld.sock
如果这样可以解决问题,您可以根据您的安全设置按需定制套接字的权限和所有权。
此外,运行 mysqld 进程的用户必须可以访问套接字所在的目录。
kill -9
;有几种方法可以尝试,然后才不得不这样做。
ps -aux | grep mysqld
并查看是否有其他 mysql 进程正在运行
由于多次安装mysql而发生此错误。运行命令:
ps -A|grep mysql
使用以下命令终止进程:
sudo pkill mysql
然后运行命令:
ps -A|grep mysqld
还可以通过运行终止此进程:
sudo pkill mysqld
现在您已完全设置,只需运行以下命令:
service mysql restart
mysql -u root -p
再次拥有运行良好的 mysql
解决方案要容易得多。
首先,您必须找到 mysql.sock 文件所在的位置(在终端中使用“sudo find / -type s”)。在我的情况下,它位于 /opt/lampp/var/mysql/mysql.sock 启动终端并发出 sudo Nautilus 这将以超级用户权限启动文件管理器 从 Nautilus 导航到 mysql.sock 文件所在的位置 右键单击文件并选择制作链接 将链接文件重命名为 mysqld.sock 然后右键单击该文件并将其剪切 转到 /var/run 并创建一个名为 mysqld 的文件夹并输入它 现在右键单击并粘贴链接文件瞧!您现在将在 /var/run/mysqld/mysqld.sock 有一个 mysqld.sock 文件 :)
/usr/var/mysqld/mysqld.sock
2- 确保 mysqld 正在运行(通过运行 /where/your/mysql/is/mssqld_safe
) 3- 搜索 mysql 套接字现在所在的位置(通过 sudo find / -type s
让我们说它在 /tmp/mysql.sock
上) 4- 制作从 where-it-is 到 where-it's-to-be 的软链接(通过 sudo ln -s /usr/var/mysql/mysql.sock /tmp/mysql.sock
)
sudo find / -type s
的输出不包含任何 mysql.sock
怎么办?
安装后只需要启动 MySQL 服务:
对于 Ubuntu:
sudo service mysql start;
对于 CentOS 或 RHEL:
sudo service mysqld start;
sudo systemctl status mysql.service
和 sudo systemctl start mysql.service
检查。这对我有用
在带有 MySQL 5.6 和 5.7 的 Ubuntu 上存在一个错误,其中 var/run/mysqld/
会在 MySQL 服务停止或重新启动时消失。这完全阻止了 MySQL 的运行。找到了这个不完美的解决方法,但至少在停止/重启后它可以运行:
mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/
# systemd tmpfile settings for mysql # See tmpfiles.d(5) for details
然后, d /var/run/mysqld 0755 mysql mysql -
重启后,mysql应该正常启动。这是来自 bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1435823,评论 3。如果您在使用 MySQL 5.7 时遇到此问题,请在 Launchpad 上发表评论。解决问题的用户越多,它就会得到越多的关注。
/etc/tmpfiles.d/mysql.conf
中添加行为我解决了这个问题。在 Centos 7 操作系统上并使用 mysql Ver 15.1 Distrib 10.3.11-MariaDB,
。
好的,只需复制并粘贴这些代码:这应该在终端中完成,在服务器内部,当您的 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
制作这样的链接并提供给系统
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
运行安全安装,指导您配置 mysql 所需的所有过程
/usr/bin/mysql_secure_installation
Can't connect
错误。
我遇到了同样的错误,发现这是由于升级包引起的,所以在重新启动我的系统后我解决了错误。
我认为由于 sql 库/包更新发生了错误,所以如果你正在做一些升级,试试这个:)
确保您无法访问的套接字文件路径与“/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
这个问题有很多原因,但有时只需重新启动 mysql 服务器,它就会解决问题。
sudo service mysql restart
用户加载步骤的答案对我有用。有时需要编辑 /etc/mysql/my.cnf
中的文件向客户端添加行
[client]
password = your_mysql_root_password
port = 3306
host = 127.0.0.1
socket = /var/lib/mysql/mysql.sock
mysql: unknown variable 'Host=127.0.0.1'
Host
需要小写 host
才能工作。此外,这个解决方案对我有用。
在 ubuntu 上使用 XAMPP:
在 /var/run 目录中创建一个名为 mysqld 的文件夹。您可以使用命令 sudo mkdir /var/run/mysqld 来完成此操作。创建一个指向 mysql.sock 文件的符号链接,该文件由 XAMPP 服务器在启动时创建。您可以使用命令 sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock。
注意: mysql.sock 文件在服务器启动时创建,在服务器停止时删除,因此有时您创建的链接可能看起来已损坏,但只要您使用 sudo /opt 启动服务器,它就应该可以工作/lampp/lampp start 或任何其他方式。
如果服务器尚未运行,请启动它并再次尝试执行您的程序。
祝你好运!我希望你这次能侥幸逃脱。
为什么会出现此错误
我收到了 mysql 库的新更新,所以在收到这些错误之后我更新了我的 Kubuntu 操作系统。
我尝试过的命令以及我如何修复它。
MySql-server 运行正常,但是当我尝试连接它时
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
在那之后,一切都为我解决了。
*错误:'无法通过套接字'/var/run/mysqld/mysqld.sock'(2)连接到本地MySQL服务器'
解决方案
最后卸载并重新安装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] Y 按 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 (对于你应该首先使用的每个密码)
输入密码:
注意:输入的密码应该和mysql的安装时密码相同(如.root、system、admin、rahul等...)然后输入
使用 rahul_db(数据库名称);
谢谢。**
mysql-server-5.6/5.5, mysql-client-5.6/5.5
。谢谢!
E: Package 'mysql-server-5.6' has no installation candidate
,它在 Ubuntu 18.04 中不存在
我认为您的 MySQL 服务器尚未启动。因此,使用以下命令之一启动服务器。
#services mysql start
或者
#/etc/init.d/mysql start
临时解决方案
也许有人面临这个问题。我在 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
请注意,这是一个临时解决方案,因为创建的文件将位于 /tmp
下。请参阅其他答案以获得永久解决方案。
/tmp
文件夹下,因此它肯定会被删除。您可以更改 .sock
文件位置。请参阅@user3002884 答案。
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
这对我有用
/etc/mysql/mysql.cnf
这已经被提到了几次,但这对我来说立即起作用:
服务mysql重启
如果您已经在 sudo apt-get install mysql-server
之前安装了 mysql-server
,您可以在 /var/run/mysqld
中找到 mysqld.sock
我刚刚在 Ubuntu 14.10 上遇到了这个问题
原来 mysql-server
不再安装(不知何故已被删除),但我不能只安装它,因为存在一些损坏的包和依赖问题/冲突。
最后我不得不重新安装mysql
sudo apt-get remove mysql-client
sudo apt-get install mysql-server
在我的情况下,两个 mysqld 进程正在运行.. 使用 pkill -9 mysqld 杀死了可选进程
如果您的系统上有很多数据库和表,并且您在 my.cnf 中设置了 innodb_file_per_table
,那么您的 mysql 服务器可能已经用完了打开的对象/文件(或者更确切地说是这些对象的描述符)新的最大数量
open-files-limit = 2048
并重新启动mysql。当根本没有创建套接字时,这种方法可能会有所帮助,但实际上这可能不是真正的问题,这是一个潜在的问题。
我有完全相同的问题。苦苦挣扎了一个小时,终于找到了不用重新安装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
你会看到它运作良好!而且停止它也没有问题。
我的解决方案;
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
我在 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 服务器。
编辑:最近我安装了 Ubuntu 20.04 并尝试安装 MySQL 服务器,但我的系统崩溃并且根本无法工作。所以我刚刚完全删除了 MySQL 并安装了 MariaDB。它像魅力一样工作,没有任何问题。
将 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
我在 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
这似乎奏效了。
首先创建目录 /var/run/mysqld
用命令:
mkdir -p /var/run/mysqld
然后将 rigths 添加到目录
chown mysql:mysql /var/run/mysqld
经过这次尝试
mysql -u root
您必须安装 mysql-server
apt install mysql-server
我还会检查mysql配置。我在自己的服务器上遇到了这个问题,但我有点太仓促并且错误地为我的机器配置了 innodb_buffer_pool_size。
innodb_buffer_pool_size = 4096M
它通常可以运行到 2048 年,但我想我没有足够的内存来支持 4 个演出。
我想这也可能发生在其他 mysql 配置设置中。
sudo service mysqld start
sudo apt-get install mysql-server
如果您还没有安装它:)