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


当前回答

' / var /运行/ mysqld / mysqld。Sock '(2)'在弹出的操作系统

如果你吃了pop-os,就这么做

删除和清除之前安装的mysql服务器。然后按如下方式安装并配置。

sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation

其他回答

我在CentOS VPS上也遇到了类似的问题。如果MySQL启动后无法启动或一直崩溃,请尝试以下步骤:

1)找到my.cnf文件(我的文件位于/etc/my.cnf),并添加一行:

innodb_force_recovery = X

将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)中添加的行。

6)恢复所有bd的倾倒在3)。

好运!

我的解决方案;

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 service mysql start

我在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。它的工作就像一个魅力没有任何问题。

在Ubuntu的MySQL 5.6和5.7版本中,当MySQL服务停止或重新启动时,var/run/mysqld/将消失。这将阻止MySQL运行。找到了这个解决方案,它不是完美的,但至少它可以在停止/重启后运行:

mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/