我的问题开始与我不能登录根在我的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。sock文件在MariaDB启动时创建,在MariaDB关闭时删除。如果MariaDB不运行,它就不存在。 也许你没有安装MariaDB。 你可以按照下面的说明操作: https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 最好的

其他回答

解决方法简单多了。

First, you have to locate(in Terminal with "sudo find / -type s") where your mysql.sock file is located. In my case it was in /opt/lampp/var/mysql/mysql.sock Fire up Terminal and issue sudo Nautilus This starts your Files manager with super user privileges From Nautilus navigate to where your mysql.sock file is located Right click on the file and select Make Link Rename the Link File to mysqld.sock then Right click on the file and Cut it Go to /var/run and create a folder called mysqld and enter it Now right click and Paste the Link File Voila! You will now have a mysqld.sock file at /var/run/mysqld/mysqld.sock :)

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

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

sudo service mysql restart
sudo apache services restart

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

您必须安装mysql-server

apt install mysql-server

我遇到同样的错误,发现这是由于升级包,所以重新启动我的系统后,我解决了错误。

我认为由于sql库/包更新发生了错误,所以如果你正在进行一些升级,请尝试一下:)

我在Ubuntu的虚拟机上运行我的MySQL,所以当我重启我的主机和虚拟机时,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服务器

如果不是,那么在/etc/network/interfaces中使用nano, vi, vim或任何你喜欢的东西更改你的IP。

我更喜欢sudo nano /etc/network/interfaces

并输入以下内容

auto eth0
iface eth0 inet static
address 192.168.0.5
netmask 255.255.255.0

保存接口文件,重新启动你的接口sudo ifdown eth0 && sudo ifup eth0用你的网络接口替换“eth0”

重新启动MySQL sudo service MySQL stop,然后执行sudo service MySQL start

如果你和我有同样的问题,你可以去!