我的问题开始于我无法在我的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的新手,所以我不知道这是否正常 . 但我会包含这些信息以防它有所帮助 .
I finally decided to uninstall and reinstall 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
. 但我've noticed that it doesn' t提示我输入密码 . 是不是应该要求管理员密码?
30 回答
用户加载步骤的答案对我有用 . 有时需要在
/etc/mysql/my.cnf
中添加行来编辑文件到客户端要查找系统上运行的所有套接字文件:
我的Mysql服务器系统在
/var/lib/mysql/mysql.sock
打开套接字找到套接字打开的位置后,使用套接字文件的路径添加或编辑/etc/my.cnf文件中的行:
有时,启动命令行可执行文件的系统启动脚本会指定标志
--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
有些系统没有't setup to have an elegant way to stop mysql (or for some reason mysql doesn' t响应)你可以强制终止mysql:
一步:
pkill -9 mysqld
两步(最不喜欢):
使用
pgrep mysql
或ps aux | grep mysql | grep -v grep
查找mysql的进程ID假设进程id是
4969
以kill -9 4969
终止执行此操作后,您可能希望在
/var/run/mysqld/
中查找pid文件并将其删除确保套接字上的权限是这样的,即任何用户mysqld正在运行,因为它可以读/写它 . 一个简单的测试是将其打开到完全读/写并查看它是否仍然有效:
如果这样可以解决问题,则可以根据安全设置根据需要定制套接字的权限和所有权 .
此外,运行mysqld进程的用户必须可以访问套接字所在的目录 .
试试这个命令,
由于多次安装mysql而发生此错误 . 运行命令:
使用以下方法终止进程:
然后运行命令:
同时运行以下命令终止此过程:
现在您已完全设置,只需运行以下命令:
有一个非常好的工作mysql了
解决方案更容易 .
首先,您必须找到(在带有"sudo find / -type s"的终端中)
mysql.sock
文件所在的位置 . 在我的情况下它是/opt/lampp/var/mysql/mysql.sock
启动终端并发出
sudo Nautilus
这将以超级用户权限启动您的文件管理器
从Nautilus导航到
mysql.sock
文件所在的位置右键单击该文件,然后选择“生成链接”
将链接文件重命名为
mysqld.sock
然后右键单击该文件并将其剪切转到
/var/run
并创建一个名为mysqld
的文件夹并输入它现在右键单击并粘贴链接文件
瞧!您现在将在
/var/run/mysqld/mysqld.sock
:)处拥有mysqld.sock
文件安装后只需启动MySQL服务:
对于Ubuntu:
对于CentOS或RHEL:
好吧,只需复制并粘贴这些代码:这应该在终端,服务器内部,当您的mysql数据库没有正确安装时,以及当您收到此错误时:'无法通过套接字连接到本地MySQL服务器'/ var / run / mysqld / mysqld.sock'(2)' .
Stop MySql
Restart it or start it
Make a link like this and give it to the system
Run a secure installation which guides all the process you need to do to configure mysql
我遇到了同样的错误发现这是由于软件包的升级,所以在重启系统后我解决了错误 .
我认为由于sql库/包更新发生了错误,所以如果你正在做一些升级尝试这个:)
Ubuntu上有一个带有MySQL 5.6和5.7的错误,只要MySQL服务停止或重新启动,
var/run/mysqld/
就会消失 . 这可以防止MySQL运行 . 找到了这个解决方法,这并不完美,但至少它会在停止/重启后运行:这个问题有很多原因,但有时只是重新启动mysql服务器,它将解决问题 .
*错误:'无法通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock'(2)'
solutions
最后卸载并重新安装mysql . **
sudo apt-get删除mysql-server
sudo apt-get删除mysql-client
sudo apt-get删除mysql-common
sudo apt-get删除phpmyadmin
然后再安装
执行此操作后,将使用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(对于你应该使用的每个密码)
输入密码:
注意:输入的密码应与mysql的安装时密码相同(如.root,system,admin,rahul等...)
然后输入
谢谢 . **
你可以在
/var/run/mysqld
中找到mysqld.sock
如果你已经sudo apt-get install mysql-server
安装了mysql-server
也许有人面临这个问题 . 我在 Ubuntu 14 上使用 Mysql Workbench 并收到此错误 .
通过运行
sudo find / -type s
查找您的套接字文件,在我的情况下它是/run/mysqld/mysqld.sock
所以,我刚刚在
tmp
目录中创建了这个文件的链接 .ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
在
/etc/my.cnf
添加以下行:并重启服务:
service mysql restart
这对我有用
在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
.祝好运!我希望你这次能逃脱它 .
在我的情况下,两个mysqld进程正在运行..使用pkill -9 mysqld杀死了可选进程
如果你的系统上有很多数据库和表,如果你在my.cnf中设置了
innodb_file_per_table
,那么你的mysql服务器可能已经用完了打开的对象/文件(或者更确切地说是这些对象的描述符)设置一个新的最大值号码并重启mysql . 当根本没有创建套接字时,这种方法可能有所帮助,但实际上这可能不是真正的问题,存在潜在的问题 .
我刚刚在Ubuntu 14.10上遇到过这个问题
转而认为
mysql-server
已不再安装(不知何故已被删除)但我无法安装它,因为存在一些破坏的包和依赖性问题/冲突 .最后我不得不重新安装mysql
这已经提到了几次,但这对我来说很有效:
service mysql restart
将
host
更改为127.0.0.1
对我有用 .在
/etc/mysql/my.cnf
中编辑该文件,并将以下提到的行添加到该部分:client
完成后 . 执行以下命令 .
我在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
检查MySQL绑定如果两个IP都相同,则重新安装mysql服务器
如果没有,那么使用nano,vi,vim或您喜欢的任何内容在
/etc/network/interfaces
中更改您的IP .我更喜欢
sudo nano /etc/network/interfaces
并输入以下内容
保存interfaces文件,重新启动界面
sudo ifdown eth0
&&sudo ifup eth0
将"eth0"替换为您的网络接口重启MySQL
sudo service mysql stop
后跟sudo service mysql start
如果你遇到和我一样的问题,你很高兴!
我也会检查mysql配置 . 我用我自己的服务器遇到了这个问题,但我有点太仓促并错误配置了我机器的innodb_buffer_pool_size .
innodb_buffer_pool_size = 4096M
它通常可以运行到2048年,但我想我没有必要的内存来支持4场演出 .
我想这也可能发生在其他mysql配置设置中 .
我在CentOS VPS上遇到过类似的问题 . 如果MySQL在启动后无法启动或不断崩溃,请尝试以下步骤:
1)找到my.cnf文件(我的位于/etc/my.cnf)并添加以下行:
innodb_force_recovery = X.
将数字从1替换为6,从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 .
祝好运!
我在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
这似乎有效 .
在archlinux上我遇到了这个错误,问题是
mysqld
-service没有运行 .但是我无法按照Archlinux文档中的指示使用
systemctl start mysqld
启用mysql-service . 我认为错误是这样的我首先需要重启系统 .
然后我再次输入命令(并输入
systemctl enable mysqld
),现在mysql
能够找到创建的mysql.sock
.当我在digitalocean上调整Droplet的大小时,我遇到了这种类型的问题 . 我升级了mysql版本并为我工作 . 这是我应用的教程 - https://serverpilot.io/community/articles/how-to-upgrade-mysql-5.5-to-5.6-on-ubuntu-14.04.html
我尝试了几乎所有列出的解决方案,没有任何工作,直到我重新启动机器,然后当我发出命令“service mysql restart”时mysql服务器重新启动 .
在我的情况下,问题是/etc/mysql/my.cnf中的绑定地址,然后:
nano /etc/mysql/my.cnf
搜索绑定地址并删除特定的主机IP(不是127.0.0.1)
当MariaDB启动时会创建mysql.sock文件,并在关闭MariaDB时将其删除 . 它赢得了't exist if MariaDB is not running. maybe you didn' t安装MariaDB . 您可以遵循以下指示:https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 BEST
在终端提示符处尝试以下操作:
一旦允许您进入,您就可以创建新用户并在他们需要访问的特定数据库上授予您想要的权限 .
Mysql 5.7改变了一些东西,默认情况下使用auth_socket插件(而不是mysql_native_password)来保护帐户不被黑客入侵 . 您可以通过设置root的插件字段来覆盖它,但除非您有充分的理由,否则您可能不应绕过保护 . 特别是当
sudo mysql
比mysql -u root -p
更容易时 .我从Raspberry Pi帮助网站找到了所有地方的这些信息 . 在Lubuntu 18.04之后工作就像一个魅力,让我感到非常恼火几个小时 .