当我尝试连接到mysql时,出现以下错误:
无法通过套接字'/var/lib/mysql/mysql.sock'(2)连接到本地MySQL服务器
这个错误有解决方案吗?可能的原因是什么?
您是连接到“localhost”还是“127.0.0.1”? 我注意到当您连接到“localhost”时,会使用套接字连接器,但是当您连接到“127.0.0.1”时,则使用TCP/IP连接器。如果套接字连接器未启用/工作,则可以尝试使用“127.0.0.1”。
/etc/hosts
文件,显示了我的MySql主机名为mysql
。在我的连接配置中使用相同的主机名解决了这个问题。 - Stephane确保你的mysql服务正在运行
service mysqld start
接下来,请尝试以下操作之一:
(如果您没有为MySQL设置密码)
mysql -u root
如果您已经设置了密码
mysql -u root -p
service mariadb start
来启动Mariadb,因为参考链接中提到了Debian 9发布了Mariadb的MySQL变体。 - Zahra如果您的文件my.cnf(通常位于etc文件夹中)配置正确,则为
socket=/var/lib/mysql/mysql.sock
您可以使用以下命令检查MySQL是否正在运行:
mysqladmin -u root -p status
尝试更改mysql文件夹的权限。如果您是在本地工作,可以尝试:
sudo chmod -R 777 /var/lib/mysql/
这对我解决了问题。
sudo chmod -R 777 /var/lib/mysql/
对我很有帮助,我能够节省大量时间和精力。 - hiburn8MySQL 服务器未运行,或其套接字文件的位置错误(请检查 my.cnf 文件)。
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
然后您应该能够以通常的方式访问mysql:
mysql -u root -p
mariadb-server
和mariadb
之后,别忘了运行mysql_secure_installation
来清理一些默认的不安全设置。 - Dio Phung很可能 mysql.sock
在 /var/lib/mysql/
中不存在。
如果你在另一个位置找到了同样的文件,则可以创建符号链接:
例如: 我将其放置在 /data/mysql_datadir/mysql.sock
中
切换到 mysql 用户并执行以下命令:
su mysql
ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock
那解决了我的问题。
mysql.sock
文件。 - Aurelio.sock
的概念确实有用! - BuvinJ只需编辑/etc/my.cnf
文件,然后将以下行添加到my.cnf
中。
[mysqld]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
重新启动mysql并再次连接
mysql -u 用户名 -p 密码 数据库名 -h 主机地址;
/var/lib/mysql/mysql.sock
移动到/tmp/mysql.sock
中的另一个位置,这是在/etc/my.cnf
中进行的设置。ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
问题出在客户端配置方式上。运行诊断实际上会显示正确的socket路径,例如ps aux | grep mysqld
。mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock
无法工作:
mysql -uroot -p
mysql -uroot -p -hlocalhost
[client]
部分下添加相同的socket行来解决此问题。检查您的mysqld服务是否正在运行,如果未运行,请启动该服务。
如果您的问题没有解决,请查找/etc/my.cnf
并进行以下修改,其中您看到以socket
开头的行。 在执行此更新之前备份该文件。
socket=/var/lib/mysql/mysql.sock
更改为
socket=/opt/lampp/var/mysql/mysql.sock -u root
MariaDB,是MySQL的一个由社区开发的分支,已经成为许多发行版中MySQL的默认实现。
所以首先你应该开始,
$ sudo systemctl start mariadb
如果这个方法失败了,那么请尝试另一种方式,
$ sudo systemctl start mysqld
然后启动mysql:
$ mysql -u root -p
截至今日,在Fedora中,该软件包称为mariadb
,而在Ubuntu中被称为mariadb-server
。
因此,如果您的系统中尚未安装它,则可能需要安装它。