无法连接到MySQL数据库 - PHP

时间:2013-10-17 17:21:47

标签: php mysql

在这里快速提问,我是网络托管的新手,我只是在瞎逛看看是什么。我创建了以下PHP文档并将其托管在我的免费000webhost域中:

<?php 

$mysql_host = "mysqlXX.000webhost.com"; 
$mysql_database = "***********_people"; 
$mysql_user = "*************_admin"; 
$mysql_password = "******************"; 

// Create connection 
$con=mysqli_connect($mysql_host,$mysql_database,$mysql_user,$mysql_password); 

// Check connection 
if (mysqli_connect_errno($con)) 
  { 
  echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
?>

我已在数据库中设置(希望正确)一个包含3个字段的小表:

  1. ID - No Null,auto-increment,integer,primary
  2. 名字 - VarChar,长度20
  3. 姓氏 - VarChar,长度20
  4. 并输入每个数据。 当我从控制面板打开文件时,出现以下错误:

      

    警告:mysqli_connect()[function.mysqli-connect] :( 28000/1045):   用户'a4935911_people'@'10.1.1.45'拒绝访问(使用密码:   是)在第9行的/home/a4935911/public_html/MySQL+PHP.php中

      

    无法连接到MySQL:用户拒绝访问   'a4935911_people'@'10.1.1.45'(使用密码:是)

    任何想法,任何人?

6 个答案:

答案 0 :(得分:6)

错误的参数序列在这里:

$con=mysqli_connect($mysql_host,$mysql_database,$mysql_user,$mysql_password);

查看以下消息:Access denied for user 'a4935911_people'@'10.1.1.45' (using password: YES)其中a4935911_people不是用户,而是$mysql_database = "***********_people";上方设置的数据库名称。

使用Host, user, password, dbname,如Documentation

中所述

解决方案:

$con=mysqli_connect($mysql_host, $mysql_user, $mysql_password, $mysql_database);

答案 1 :(得分:2)

1116-31507/com.google.android.gms E/CursorLeakDetecter﹕ PossibleCursorLeak:content://com.google.android.gms.common.stats.net.contentprovider/networkrawreport,QueryCounter:5
    android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
            at android.content.ContentResolver.query(ContentResolver.java:399)
            at android.content.ContentResolver.query(ContentResolver.java:316)
            at com.google.android.gms.common.stats.net.NetworkReportService.a(SourceFile:141)
            at com.google.android.gms.gcm.am.run(SourceFile:129)

答案 2 :(得分:0)

两个可能的原因:

  1. 用户名/密码错误 - 请仔细检查。

  2. 您无法远程连接,只允许通过localhost建立连接。查看您的托管网站以获取此类信息。如果不允许,你什么都不做。

答案 3 :(得分:0)

除了@ElonThan提供的可能结论......

您的用户名也可能缺少您所连接数据库的适当权限。

答案 4 :(得分:0)

对于000webhost.com(免费托管服务),您应该通过上传到000webhost.com服务器来在线测试您的代码。

这肯定会解决您的问题。

答案 5 :(得分:0)

您需要在MySQL数据库服务器(即 mysqlXX.000webhost.com )中将mysql设置为允许特定用户的远程连接。默认语法为:

grant <permission> on <database> to <user>@<location> identified by <password>

所以在这里你必须使用(因为你已经指定了参数) -

grant all on ***********_people.* to '*************_admin'@'10.1.1.45' identified by '******************'

因此,对于您的情况,运行以下命令 - grant all on database_name.* to 'username'@'your_ipaddress' identified by 'password'

在MySQL命令提示符下运行此命令。

这将允许用户名使用密码 从您的IP 连接,并为指定数据库中的所有表提供所有权限。

  • 要允许任何用户连接来自任何IP地址并使用任何数据库中的所有表,请使用以下语法 -

grant all on *.* to '%'@'%' identified by 'password'

最后你必须使用以下命令 -

FLUSH PRIVILEGES;

重新加载所有权限。