Answers:
您要连接到“ localhost”还是“ 127.0.0.1”?我注意到,当您连接到“ localhost”时,使用套接字连接器,但是当您连接到“ 127.0.0.1”时,则使用TCP / IP连接器。如果套接字连接器未启用/工作,则可以尝试使用“ 127.0.0.1”。
/etc/hosts
我的Docker容器中的文件后,我发现MySql主机名为mysql
。在我的连接配置中使用相同的主机名解决了该问题。
确保您的mysql服务正在运行
service mysqld start
然后,尝试以下任一操作:
(如果您尚未设置mysql的密码)
mysql -u root
如果您已经设置了密码
mysql -u root -p
service mariadb start
因为mariadb.org/debian-9-released-mariadb-mysql-variant
MySQL服务器未运行,或者不是其套接字文件的位置(请检查my.cnf)。
极有可能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
那解决了我的问题
在我来说,我已经搬到套接字文件到另一个位置,里面/etc/my.cnf
从/var/lib/mysql/mysql.sock
到/tmp/mysql.sock
即使重新启动mysqld服务,尝试连接时我仍然会看到错误消息。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
问题在于客户端的配置方式。运行诊断程序实际上将显示正确的套接字路径。例如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
您可以通过在mysql config中的section 下添加相同的套接字行来解决此问题。[client]
检查您的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
:mariadb-server
。
因此,如果尚未在系统中安装它,则可能必须安装它。
确保剩余空间 /var
。如果Mysql demon无法将其他信息写入驱动器,则mysql服务器将无法启动,并导致错误Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
考虑使用
expire_logs_days = 10
max_binlog_size = 100M
这将帮助您降低磁盘使用率。
innodb_buffer_pool_size
在my.cnf
。将其设置为一个较小的值innodb_buffer_pool_size = 50M
是丢弃此假设的一个很好的检验;)
请检查是否另一个MySQL服务正在运行。
确保您启动了服务器:
mysql.server start
然后与root用户连接:
mysql -uroot
如果您更改/ var / lib / mysql中的文件[如复制或替换],则必须将文件所有者设置为mysql,如果mariadb.service重新启动失败,则这非常重要。
chown -R mysql:mysql / var / lib / mysql / *
chmod -R 700 / var / lib / mysql / *
我的问题是我成功安装了mysql,并且工作正常。
但是有一天,发生了同样的错误。
无法通过套接字'/var/lib/mysql/mysql.sock'连接到本地MySQL服务器(2)
并且不存在mysql.sock文件。
此解决方案解决了我的问题,并且mysql重新启动并运行:
以root身份登录:
sudo su -
跑:
systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service
以root身份测试:
mysql -u root -p
mysql现在应该已启动并正在运行。
我希望这也可以帮助其他人。
重现此错误的一种方法:如果您打算连接到外部服务器,而连接到不存在的本地服务器:
eric@dev ~ $ mysql -u dev -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through
socket '/var/lib/mysql/mysql.sock' (2)
eric@dev ~ $
因此,您必须像这样指定主机:
eric@dev ~ $ mysql --host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 235
Server version: 5.6.19 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+-------------------------+
| Database |
+-------------------------+
| information_schema |
| mysql |
| performance_schema |
+-------------------------+
3 rows in set (0.00 sec)
mysql> exit
Bye
eric@dev ~ $
尝试在SSH客户端中连接mysql时遇到此问题,发现当需要在套接字之间进行切换时,将套接字路径添加到命令很有用。
> mysql -u user -p --socket=/path/to/mysql5143.sock
如果磁盘空间不足,这将是一个问题。解决方案是从硬盘中释放一些空间。
请阅读更多以获取解释:
如果您在LINUX上运行MySQL,请使用命令disk free检查HDD的可用空间:
df
如果您得到这样的东西:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 5162828 4902260 0 100% /
udev 156676 84 156592 1% /dev
/dev/sda3 3107124 70844 2878444 3% /home
这就是问题所在,现在您有了解决方案!
由于mysql.sock想要在几乎总是位于根文件夹下的mysql文件夹中创建,因为空间不足,无法实现它。
如果您定期在mysql目录下提供ls命令(在openSUSE 11.1位于/ var / lib / mysql),您将得到类似以下内容的信息:
hostname:/var/lib/mysql #
.protected IT files ibdata1 mysqld.log systemtemp
.tmp NEWS greekDB mysql mysqld.pid test
ARXEIO TEMP1 ib_logfile0 mysql.sock polis
DATING deisi ib_logfile1 mysql_upgrade_info restore
mysql.sock文件经常出现和消失(您必须尝试使用ls分配,以使用文件夹上的mysql.sock文件命中实例)。
这是由于磁盘空间不足引起的。
我希望我能帮助一些人!谢谢!