我的问题开始与我不能登录根在我的mysql安装更多。我试图运行mysql没有密码打开…但每当我执行命令时

# mysqld_safe --skip-grant-tables &

我再也拿不回提示了。我试图按照这些说明恢复密码。

屏幕看起来是这样的:

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

我不知道这是否正常。但我把这些信息也包括进来,以防有用。

我最终决定卸载并重新安装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。在各自的位置都不好。

/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。但我注意到它并没有提示我输入密码。它不是应该要求输入管理员密码吗?


当前回答

我也有同样的问题。在挣扎了一个小时后,我找到了一种无需重新安装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

你会发现它工作得很好!而且阻止它也没有问题。

其他回答

将主机更改为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

这个解决方案可以帮助其他人,有时修复非常简单。

在您的活动环境中重新启动mysql服务器和apache

sudo service mysql restart
sudo apache services restart

当您安装插件或执行任何数据库命令时,这是一个常见问题。

在archlinux上,我遇到了这个错误,问题是mysql服务没有运行。

然而,我无法启用mysql-service与systemctl启动mysqld在Archlinux文档中的指示。我想这个错误是

mysqld。未找到服务

我首先需要重新启动系统。

然后我再次输入命令(并输入systemctl enable mysqld),现在mysql能够找到创建的mysql.sock。

在/etc/mysql/my.cnf目录下找到my.cnf文件 (相应地改变它表示socket的位置)

port            = 3306
socket          = /tmp/mysql.sock

这里是一些特定程序的条目 下面的值假设您至少有32M ram

它的正式名称是[safe_mysqld]。两个版本目前都进行了解析。

[mysqld_safe]
socket          = /tmp/mysql.sock
nice            = 0

在我的情况下,问题是在/etc/mysql/my.cnf中的绑定地址,然后:

/ etc / mysql / my . cnf纳米

搜索绑定地址并删除特定的主机IP(不是127.0.0.1)