我的问题开始与我不能登录根在我的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。但我注意到它并没有提示我输入密码。它不是应该要求输入管理员密码吗?


当前回答

我的解决方案;

Ubuntu 18.04 (WSL)

/ etc / mysql / my . cnf

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

/ etc / mysql / mysql上。d / mysqld cnf。

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306

我换了端口。这对我很有效。您可以编写另一个端口。3355年的例子

其他回答

在终端提示符下尝试以下操作:

sudo mysql

一旦允许您进入,您就可以创建一个新用户,并在他们需要访问的特定数据库上授予所需的特权。

Mysql 5.7修改了一些东西,默认使用auth_socket插件(而不是mysql_native_password)作为root来保护帐户不被黑客攻击。你可以通过为root设置插件字段来覆盖这个保护,但是除非你有很好的理由,否则你可能不应该绕过这个保护。尤其是当sudo mysql比mysql -u root -p简单的时候。

我从树莓派的帮助网站上找到了这个信息。在Lubuntu 18.04让我烦了几个小时后,效果很好。

查找系统中所有的套接字文件:

sudo find / -type s

我的Mysql服务器系统在/var/lib/mysql/mysql.sock上打开了套接字

一旦你找到套接字被打开的位置,在/etc/my.cnf文件中添加或编辑这一行,并附上套接字文件的路径:

socket=/var/lib/mysql/mysql.sock

Sometimes the system startup script that launched the command line executable specifies a flag --socket=path. This flag could override the my.cnf location, and that would result in a socket not being found where the my.cnf file indicates it should be. Then when you try to run the mysql command line client, it will read my.cnf to find the socket, but it will not find it since it deviates from where the server created one. So, Unless you care where the socket resides, just changing the my.cnf to match should work.

然后停止mysqld进程。具体操作方法因系统而异。

如果你是linux系统的超级用户,如果你不知道你的Mysql设置使用的具体方法,试试下面的其中一个:

服务mysqld停止 /etc/init.d / mysqld停止 Mysqladmin -u root -p shutdown 一些系统没有设置一个优雅的方式来停止mysql(或者由于某种原因mysql没有响应),你可以强制终止mysql: 一步:pkill -9 mysqld 两步(最不可取): 使用pgrep mysql或ps aux | grep mysql | grep -v grep查找mysql的进程号 假设进程id是4969,终止kill -9 4969

执行此操作后,您可能希望在/var/run/mysqld/中查找一个pid文件并删除它

确保套接字上的权限是这样的,无论运行mysqld的用户可以读/写它。一个简单的测试是将其打开到完全读/写,看看它是否仍然有效:

chmod 777 /var/run/mysqld/mysqld.sock

如果这解决了问题,您可以根据需要根据安全设置定制套接字的权限和所有权。

另外,运行mysqld进程的用户必须能够访问套接字所在的目录。

我的情况是,/etc/目录中的mysql被重命名为mysql_bk,只需复制mysql_bk即可

sudo cp -r /etc/mysql_bk/ /etc/mysql/

then

service mysql restart

*错误:“不能通过套接字连接到本地MySQL服务器/ var /跑步/ mysqld / mysqld。袜子”(2)“

解决方案

最后卸载并重新安装mysql。**

删除mysql-server 删除mysql客户端 Sudo apt-get remove mysql-common Sudo apt-get删除phpmyadmin

然后重新安装

安装mysql-server-5.6

该操作将额外占用164mb的磁盘空间。

你想继续吗?[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(每个密码前u 应该使用) 输入密码: 注意:输入的密码需与安装时间一致 mysql的密码(如。root,system,admin,rahul等) 然后输入 使用rahul_db(数据库名);

谢谢。* *

我在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

这个过程没有任何构型。

如果你不想每次都输入套接字路径,那么在my.cnf中通过“/var/run/mysqld/mysqld.sock”修改默认路径。提供权限并重新启动mysql服务器。

编辑: 最近我安装了Ubuntu 20.04,并试图安装MySQL服务器,但我的系统崩溃了,根本无法工作。所以我刚刚完全删除了MySQL,安装了MariaDB。它的工作就像一个魅力没有任何问题。