PHP连接WordPress MySQL数据库报Host不被允许访问如何解决?
该报错是MySQL服务端的访问权限限制导致:你当前运行PHP脚本的主机IP(对应报错中的ip72-205-1-229.dc.dc.cox.net)没有被添加到对应数据库账号的允许访问列表中,MySQL默认会限制账号仅允许本地(localhost/127.0.0.1)登录,默认不允许外网主机直接访问。
报错原文:
PHP Warning: mysqli::__construct(): (HY000/1130): Host 'ip98-436-9-183.dc.dc.cox.net' is not allowed to connect to this MySQL server in /home/ahmadarsalann/php/edit.php on line 7
Connection failed: Host 'ip72-205-1-229.dc.dc.cox.net' is not allowed to connect to this MySQL server
你当前使用的连接代码(除权限问题外,还缺失数据库名参数,后续操作wp_posts表时会出现未选择数据库的报错,原始代码如下:
<?php $servername = "umw3.reclaimhosting.com"; $username = "username"; $password = "password"; // Create connection $conn = new mysqli($servername, $username, $password); // // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } echo "Connected successfully"; ?>
相关数据库信息截图:
方案1:优先使用本地连接(推荐)
如果你的PHP脚本和WordPress站点、MySQL服务部署在同一台服务器上,按以下步骤操作即可:
- 将
$servername的值改为localhost或者127.0.0.1,绕过外网数据库默认仅对本地网络开放访问权限 - 在mysqli构造方法中补充数据库名参数,数据库名、用户名、密码可以直接在WordPress根目录的
wp-config.php文件中查看
修改后的连接代码参考:
<?php $servername = "localhost"; $username = "你的真实数据库用户名"; $password = "你的真实数据库密码"; $dbname = "你的WordPress数据库名"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检测连接 if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } echo "Connected successfully"; ?>
如果只是为了操作WordPress的wp_posts表,更推荐直接复用WordPress内置的数据库操作类$wpdb,不需要单独创建数据库连接,避免凭据泄露风险,使用示例:
<?php // 引入WordPress核心文件(如果脚本放在WordPress根目录下) require_once 'wp-load.php'; global $wpdb; // 示例:修改ID为10的文章标题 $wpdb->update( 'wp_posts', ['post_title' => '新的文章标题'], ['ID' => 10] );
方案2:开启远程访问权限(仅适用于PHP脚本和MySQL不在同一服务器的场景)
- 登录你的reclaimhosting主机管理面板,找到数据库管理模块
- 找到对应数据库的用户权限配置,将你当前脚本所在的主机IP(报错中显示的IP段)添加到该数据库用户的允许访问列表中
- 确认主机防火墙放开3306端口对对应IP的访问请求
注意:不要使用%配置为允许所有IP访问,会大幅降低数据库安全性。
不要将数据库账号密码明文写在Web可直接访问的PHP文件中,避免被恶意扫描获取后导致数据泄露。
内容的提问来源于stack exchange,提问作者Ben Curch

