我在使用XAMPP和单独的本地MySQL服务器(不包括运行myphpadmin的随附MariaDB)中在PHP中建立MySQL连接时遇到问题。
我已经在计算机上分别安装了MySQL(由于工作原因,我无法运行MariaDB),因此在终端和MyWorkBench中都可以正常运行。我已将端口更新为3307,以减轻该端口可能与MariaBD在同一端口上运行的风险(我确认该端口实际上未在终端中运行)。
我的凭据是正确的(因为它们在终端中工作)。
$dbobj = new PDO("mysql:host=$dbhost;dbname=$dbdatabase;charset=utf8;port=3307", $dbuser, $dbpwd);
如果我尝试使用localhost连接,则会出现以下错误:SQLSTATE [HY000] [2002]没有这样的文件或目录
如果我尝试使用ip 127.0.0.1进行连接,则会收到此错误: SQLSTATE [HY000] [2002]连接被拒绝
两者都使用端口3307,都可以在终端上工作。
运行XAMPP v.7.3.10-0, MySQL:5.7, macOS Catalina 10.15
答案 0 :(得分:0)
如果有人遇到同一问题,我会回答我自己的问题。我曾对此有经验的调查,由于新的XAMPP在虚拟机上运行,因此无法很好地解决我的问题。直接在MySQL上安装MySQL将非常耗时,因为它并不需要所有软件包等。因此,最好的解决方案是要么看工作是否可以让我暂时使用Maria DB,要么使用其他PHP服务器解决方案。
答案 1 :(得分:0)
据我了解,您已经在同一Mac盒MariaDB上安装了虚拟机,并且已经在其中安装了XAMPP。然后,您尝试在虚拟机中运行的主机和本地主机中的外部主机之间建立连接。
对于macOS,https://nmap.org/book/inst-macosx.html也有一个叫做nmap的东西,您可以使用它来扫描您的盒子并查看它所提供的服务。使用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
但是您最好要求工作接受...某些东西。