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


当前回答

在lampp中,正如我所认识的,它不识别mysql命令。 试着用

sudo /opt/lampp/bin/mysql

它将打开mysql终端,在那里你可以与数据库通信。

其他回答

将主机更改为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数据库没有正确安装,当你得到这个错误:'无法连接到本地mysql服务器通过套接字'/var/run/mysqld/mysqld。袜子(2)。

停止MySql

sudo /etc/init.d/mysqld stop

重新启动或启动它

sudo /etc/init.d/mysqld restart or sudo /etc/init.d/mysqld start

像这样做一个链接,然后把它交给系统

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

运行一个安全安装,它可以指导你配置mysql所需的所有过程

/usr/bin/mysql_secure_installation

由于多次安装mysql而出现此错误。 执行如下命令:

ps -A|grep mysql

通过以下命令终止进程:

sudo pkill mysql

然后运行命令:

ps -A|grep mysqld

也可以通过运行:

sudo pkill mysqld

现在你已经完全设置好了,只需运行以下命令:

service mysql restart
mysql -u root -p

又有很好的工作mysql吗

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

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

mysqld。未找到服务

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

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

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

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进程的用户必须能够访问套接字所在的目录。