WAMP:尝试连接到 mysql 时“不知道这样的主机”
Posted
技术标签:
【中文标题】WAMP:尝试连接到 mysql 时“不知道这样的主机”【英文标题】:WAMP: 'No such host is known' when trying to connect to mysql 【发布时间】:2013-06-08 04:38:43 【问题描述】:我收到了这个错误:
Warning: PDO::__construct() [<a href='pdo.--construct'>pdo.--construct</a>]: [2002] php_network_getaddresses: getaddrinfo failed: No such host is known. (trying to connect via tcp://1:3306) in Z:\work\...
我的 localhost/phpmyadmin 工作正常,但我无法访问 localhost 或 127.0.0.1 ,我得到一个空白页面“禁止访问:您无权访问此服务器上的 /。”
我的 80 端口上没有其他东西在运行
我修改了我的 httpd.conf
DocumentRoot "z:/work/"
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "z:/work/">
Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Deny from all
Allow from all
</Directory>
还添加到我的 httpd-vhosts.conf 中
<Directory C:/Users/Alex/Documents/GitHub>
Order Deny,Allow
Allow from all
AllowOverride All
</Directory>
<Directory Z:/work>
Order Deny,Allow
Allow from all
AllowOverride All
</Directory>
<VirtualHost *:80>
DocumentRoot "Z:\work\mysite"
ServerName bullseye.local
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:\Users\Alex\Documents\GitHub\Myproject"
ServerName framework.local
</VirtualHost>
我的 phpmyadmin.conf 如下
Alias /phpmyadmin "c:/wamp/apps/phpmyadmin3.5.1/"
<Directory "c:/wamp/apps/phpmyadmin3.5.1/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order Deny,Allow
Deny from all
Allow from all
</Directory>
给出错误的代码:
$host = 'localhost';
$user = 'root';
$pass = '';
$database = 'mydatabase';
$this->db = new PDO('mysql:dbname=' . $database . ';host=' .$host . ';charset=utf8', $user, $pass);
我使用 mysql 或 msqli 而不是 PDO 得到了同样的错误
【问题讨论】:
phpMyAdmin 只是一个客户端程序,它与 mySQL 服务器的运行位置无关。你能展示一下你使用什么代码来连接数据库,你真的有一个在 localhost 上运行的数据库服务器吗? 是的,我的 localhost 上有一个数据库(通过 localhost/phpmyadmin 创建)如果我尝试通过 mysql 或 PDO 连接,我会遇到同样的错误,我是 currenylu 使用这个:$this->db = new PDO('mysql:dbname=' . $database . ';host=' .$host . ';charset=utf8', $user, $pass);其中主机 = 'localhost' 用户 = 'root' 和密码 = '' 您是否 100% 确定按照您展示的方式进行操作?因为PHP - Variables not replaced in PDO connection string 100% 确定,如果我使用 $this->db = new PDO('mysql:dbname=mydatabase;host=localhost;charset=utf8', 'root', ''); 【参考方案1】:我的建议是:
撤消对 httpd.conf 的所有更改。您的更改已删除 Apache 对 WAMP 主页(即 localhost)的所有知识。 注释掉虚拟主机配置的包含并检查您是否可以再次访问 WAMP 主页。
确保 WAMP 处于“离线”状态,这将保证 C:\ 驱动器和 c:\wamp 文件夹的安全。
现在到您的虚拟主机定义:
为了保持 wamp 主页正常工作,第一个条目应如下所示,注意 Directory 块应该是 VirtualHost 定义的一部分,并且安全定义确保您只能从 127.0.0.1 访问 wamp 主页(本地主机)
###must be first so the the wamp menu page loads
<VirtualHost *:80>
ServerAdmin webmaster@homemail.net
DocumentRoot "D:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "D:/wamp/www">
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Directory>
</VirtualHost>
您定义的每个 VHOST 都应包含其自己的安全设置,如下所示
<VirtualHost *:80>
DocumentRoot "Z:\work\mysite"
ServerName bullseye.local
ServerAlias bullseye.local
AllowOverride All
<Directory "Z:\work\mysite">
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:\Users\Alex\Documents\GitHub\Myproject"
ServerName framework.local
ServerAlias www.framework.local
<Directory "C:\Users\Alex\Documents\GitHub\Myproject">
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>
取消注释您的虚拟主机定义的包含在 https.conf 中,然后再次尝试访问您的其他项目。
我假设您已对 c:\windows\system32\drivers\etc\hosts 文件进行了必要的更改,以包含对所有虚拟主机的引用?如果不是,hosts 文件应该如下所示:-
127.0.0.1 本地主机 127.0.0.1 框架.本地 127.0.0.1 靶心.local【讨论】:
这个,在这个webtrunghieu.info/web/…的帮助下解决了这个问题。谢谢! 请不要使用您在该博客上找到的解决方案,它太危险了。这允许任何设法闯入您的站点的黑客访问您的整个 C 驱动器,并且还允许任何人访问您的 phpMyAdmin,这是一个真正的坏主意,因为那是对您所有数据库的完全访问权限。如果您遇到这个问题,那是因为您的 PC 上有 IPV4 和 IPV6 可用。而是尝试在 httpd.conf 文件中将 'Listen *:80 更改为 Listen 0.0.0.0:80,并替换 c:\wamp 上的拒绝安全性和 phpmyadmin 别名。【参考方案2】:我担心的是:
DocumentRoot "z:/work/"
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "z:/work/">
Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Deny from all
Allow from all
</Directory>
不幸的是,在我建议之前我没有时间对此进行测试...但是如果 DocumentRoot 是 z:/work/
那么 Directory /
也是 z:/work/
并且您已将其设置为 deny all
和 override none
.稍后尝试使用Directory "z:/work/"
更改权限将被视为覆盖,因此不会被应用?我建议您在花太多时间寻找其他可能的解决方案之前尝试将 AllowOverride 更改为 all 或从 / 中删除全部拒绝。
【讨论】:
以上是关于WAMP:尝试连接到 mysql 时“不知道这样的主机”的主要内容,如果未能解决你的问题,请参考以下文章
phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接
如果 mysql 数据库驻留在 wamp 服务器中,如何将 django 项目连接到 mysql 数据库?