我的问题开始与我不能登录根在我的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:

/etc/init.d/mysql start

其他回答

*错误:“不能通过套接字连接到本地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(数据库名);

谢谢。* *

你可以找到mysqld。如果您已经安装了mysql-server,请在/var/run/mysqld中插入 通过sudo apt-get安装mysql-server

mysql。sock文件在MariaDB启动时创建,在MariaDB关闭时删除。如果MariaDB不运行,它就不存在。 也许你没有安装MariaDB。 你可以按照下面的说明操作: https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 最好的

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

sudo mysql

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

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

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

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

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