phpmyadmin mysql-server安装程序不会创建mysql.sock文件|无法连接服务器

3htmauhk  于 2022-11-09  发布在  PHP
关注(0)|答案(1)|浏览(174)

我试图连接到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

46qrfjad

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中全局定义它可能会简化工作。

相关问题