我在使用XAMPP和单独的本地MySQL服务器(不包括运行myphpadmin的随附MariaDB的情况下,通过PHP在MySQL中建立MySQL连接时遇到问题。
我已经在计算机上单独安装了MySQL(由于工作原因,我无法运行MariaDB),因此在终端和MyWorkBench中都可以正常运行。我已将端口更新为3307,以减轻该端口可能与MariaBD在同一端口上运行的风险(已确认实际上未在终端上运行)。
我的凭据是正确的(因为它们在终端中工作)。
$dbobj = new PDO("mysql:host=$dbhost;dbname=$dbdatabase;charset=utf8;port=3307", $dbuser, $dbpwd);
如果尝试使用本地主机连接,则会出现此错误:SQLSTATE [HY000] [2002]没有这样的文件或目录
如果尝试使用ip 127.0.0.1进行连接,则会出现此错误:SQLSTATE [HY000] [2002]连接被拒绝
都使用端口3307,都在终端上工作。
Running XAMPP v。7.3.10-0,MySQL:5.7,macOS Catalina 10.15
如果有人遇到同一问题,我会回答我自己的问题。我曾对此有经验的调查,由于新的XAMPP在虚拟机上运行,因此无法很好地解决我的问题。直接在MySQL VM上安装MySQL会很费时间,因为它并不需要所有软件包等。因此,最好的解决方案是要么看看工作是否可以让我暂时使用Maria DB,要么使用其他PHP服务器解决方案。
据我了解,您已经在同一Mac盒MariaDB上安装了虚拟机,并且已经在其中安装了XAMPP的虚拟机。并且您尝试在VM中运行的某些内容与localhost外部运行的某些内容之间建立连接。
对于macOS,也有一个名为nmap的东西https://nmap.org/book/inst-macosx.html,您可以用它来扫描盒子,看看上面有什么服务。使用nmap,您可能会发现自己不在同一环境中。 (?!)
无论如何,我发现here有些人在讲一个非常相似的故事。看来他能够将VM与localhost连接起来,花了他一分钟。
next guy通过主机名将网络设置为桥接来说明如何在主机数据库中访问主机上的服务。 <
在macOS上,您具有像Linux上一样的ifconfig,在Windows上称为ipconfig,它为您提供有关所有适配器和不同IP地址的所有信息
root@tux:~# ifconfig
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.178.33 netmask 255.255.255.0 broadcast 192.168.178.255
inet6 fe80::42a8:f0ff:fea2:1e58 prefixlen 64 scopeid 0x20<link>
ether 40:a8:f0:a2:1e:58 txqueuelen 1000 (Ethernet)
RX packets 366455797 bytes 41401605218 (38.5 GiB)
RX errors 0 dropped 65936 overruns 0 frame 0
TX packets 745920997 bytes 846447546164 (788.3 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 20 memory 0xf7c00000-f7c20000
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Lokale Schleife)
RX packets 6945633 bytes 1073031154 (1023.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6945633 bytes 1073031154 (1023.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
但是您最好要求工作接受...某些东西。