我尝试做的是从localhost连接到服务器数据库。
$host = 'http://www.my-domain.com/phpmyadmin/';
$user = 'u5er';
$pass = 'pa55w0rd';
$db = 'db_name';
$con = mysqli_connect($host,$user,$pass,$db) or die("Error " . mysqli_error($con));
$sql = "SELECT col FROM test WHERE id = '1'";
$result = mysqli_query($con,$sql);
错误
Warning: mysqli_connect(): in C:\xampp\htdocs\sp_concord\cenova_nabidka\page\vytvor.php on line 362
Warning: mysqli_connect(): in C:\xampp\htdocs\sp_concord\cenova_nabidka\page\vytvor.php on line 362
Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in C:\xampp\htdocs\sp_concord\cenova_nabidka\page\vytvor.php on line 362
Error
有可能解决它吗?如何确定我的服务器是否允许外部连接?以及如何定义应该允许哪些IP地址访问数据库?
感谢您的任何建议。
修改 好的,我已将主机更改为my-domain.com,现在它报告了以下错误。我的IP无法访问MySQL服务器...
Warning: mysqli_connect(): (HY000/1130): Host '88.146.210.54' is not allowed to connect to this MySQL server in C:\xampp\htdocs\sp_concord\cenova_nabidka\page\vytvor.php on line 362
Failed to connect to MySQL: Host '88.146.210.54' is not allowed to connect to this MySQL server
Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\xampp\htdocs\sp_concord\cenova_nabidka\page\vytvor.php on line 368
答案 0 :(得分:2)
如果您将本地主机文件上传到网络服务器,某些主机提供商,也使用“localhost”作为主机名
$host = 'localhost';
$user = 'u5er';
$pass = 'pa55w0rd';
$db = 'db_name';
当您未配置主机授予访问数据库时,“主机'XXX.XXX.XXX'不允许连接到此MySQL服务器”
答案 1 :(得分:1)
您的日志记录在以下行中有错误:
$con = mysqli_connect($host,$user,$pass,$db) or die("Error " . mysqli_error($con));
$con
永远不会分配值(基数mysqli_connect
失败)并且您将其传递给mysqli_error()
。
请尝试以下方法 - 它将为您提供有关无法连接的原因所需的信息:
$con = mysqli_connect($host,$user,$pass,$db);
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
正如Dagon所提到的那样,您的主机字符串应该类似于my-domain.com
,甚至更可能是localhost
而不是http://www.my-domain.com/phpmyadmin/
答案 2 :(得分:1)
大多数外部数据库通过具有正确端口号的IP或域/子域连接。你输入的是“http”,这是端口80.大多数MySQL是3306.你的主机/极值提供商应该给你一个数据库服务器的IP和登录详细信息......
答案 3 :(得分:1)
您的IP地址必须注册到您的主机才能连接到数据库
答案 4 :(得分:1)
是的,可以解决这个问题。 将变量$ host更改为正确的主机名(localhost或其他)。
要了解您的服务器是否允许外部连接,您可以使用online port扫描来查看您是否拥有对外界开放的mysql端口(默认为3306)。
要定义哪些IP地址可以访问您的数据库,您应该使用防火墙规则。
答案 5 :(得分:0)
主机字符串错误。有效的mysql URL将采用'mysql://hostname.tld/database'的形式。然而,管理员通过互联网提供SQL数据库非常不寻常。您最有可能尝试从与数据库服务器相同的服务器或网络运行您的php应用程序。