我试图连接到phpmyadmin在localhost和检索我的数据库,但我面临着一个问题,我不能修复.当我试图连接到mysql服务,我得到这个错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
(2 "No such file or directory")
我想我的文件没有创建在正确的地方,我已经看到了许多相关的问题,所以(我知道它可以在这里重复),但我还没有找到答案,通过咨询这些主题。
我试过了:
- 重新启动mysql服务(当然)-〉没有任何变化
- 清除mysql-server并重新安装,但重新安装时未创建sock文件
- 使用
sudo find / -name mysql.sock
定位我的sock文件,输出为空 - 使用
mysqladmin | grep mysql.sock
定位我sock文件,但这只在我的my.cnf文件中查找socket conf
我知道我不能自己创建这个文件,因为它是一个不寻常的格式管道文件。
有人知道如何在这里进行吗?:D
1条答案
按热度按时间46qrfjad1#
MySQL未运行或套接字路径正确MySQL使用两种不同的连接类型来监听,TCP/IP网络和套接字。需要注意的是,MySQL的权限系统区分了这两种连接类型,因此主机值为
%
的用户将不允许通过套接字进行连接,主机localhost
将不匹配TCP/IP连接,即使是来自同一台本地计算机的数据(127.0.0.1到MySQL)。如果您的用户帐户同时具有两个主机字段,则可以将phpMyAdmin配置更改为通过TCP/IP连接进行连接。
但是,更好的解决方案可能是修复套接字的路径。我不完全理解
mysqladmin | grep mysql.sock
命令的错误所在,它应该提供套接字的路径。所有程序都使用相同的套接字路径连接MySQL,因此即使mysqladmin和其他命令行工具使用的是该路径,它也是phpMyAdmin的路径。另一种获取它的方法是通过命令行客户端连接并运行STATUS;
命令。UNIX socket: /var/run/mysqld/mysqld.sock
.无论采用哪种方法,一旦获得路径,就可以通过添加(或编辑,如果已经存在)socket指令将其直接添加到
config.inc.php
:$cfg['Servers'][$i]['socket'] = '/var/run/mysqld/mysqld.sock';
.一个稍微好一点的方法是编辑PHP配置并全局设置它,这样所有的PHP程序都知道正确的路径。在
php.ini
中,正确的指令应该是mysqli.default_socket
。PHP采用“内置的MySQL默认值,”除非你在这里覆盖它,并且phpMyAdmin采用PHP设置,除非您在config.inc.php中覆盖它。因此,这些解决方案中的任何一个都可以为您解决问题。最简单的方法可能是只为phpMyAdmin设置它,但如果您正在进行其他PHP开发,则在php.ini中全局定义它可能会简化工作。