当我尝试连接mysql时,我得到以下错误:
无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)
有解决这个错误的方法吗?背后的原因可能是什么?
当我尝试连接mysql时,我得到以下错误:
无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)
有解决这个错误的方法吗?背后的原因可能是什么?
当前回答
确保在/var中有足够的空间。如果Mysql恶魔不能写入额外的信息到驱动器,Mysql服务器将不会启动,这将导致错误无法连接到本地Mysql服务器通过套接字'/var/lib/ Mysql / Mysql。袜子”(2)
考虑使用
expire_logs_days = 10
max_binlog_size = 100M
这将帮助您降低磁盘使用率。
其他回答
如果你在最近的RHEL上,你可能需要启动mariadb(一个开源的mysql db)而不是mysql db:
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
然后你应该能够以通常的方式访问mysql:
mysql -u root -p
MariaDB是MySQL的一个社区开发的分支,在许多发行版中已经成为MySQL的默认实现。
首先你应该开始,
$ sudo systemctl start mariadb
如果失败了,不如试试,
$ sudo systemctl start mysqld
然后启动mysql,
$ mysql -u root -p
到今天为止,在Fedora中,这个包被命名为mariadb 在Ubuntu中叫做mariadb-server。
因此,如果您的系统中还没有安装它,您可能必须安装它。
注意,当mysql从my.cnf文件中读取套接字文件的位置信息时,mysql_secure_installation程序有时似乎不能正确地这样做。
所以,如果你像我一样,在安装时到处乱放东西,你可能会遇到这样的情况:你可以用mysql连接到数据库,但东西不能被保护(无论如何不使用那个脚本)。
为了解决这个问题,sreddy的建议很有效:从脚本期望套接字的位置到它实际所在的位置创建一个软链接。例子:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(我使用/tmp/作为套接字的默认位置)
请检查是否有其他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 ~ $