2013-10-17 45 views
2

快速的问题在这里,我是新来的虚拟主机,我只是有一个烂摊子,看看是什么。我创建了下面的PHP文件,并托管在我的自由000webhost的域名:无法连接到MySQL数据库 - PHP

<?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 - 没有空,自动递增,整数,主要
  2. 名字 - VARCHAR,则长度20
  3. 姓氏 - VARCHAR,则长度20

并为每一个输入数据。 当我从控制面板中打开该文件,我得到以下错误:

Warning: mysqli_connect() [function.mysqli-connect]: (28000/1045): Access denied for user 'a4935911_people'@'10.1.1.45' (using password: YES) in /home/a4935911/public_html/MySQL+PHP.php on line 9

Failed to connect to MySQL: Access denied for user 'a4935911_people'@'10.1.1.45' (using password: YES)

任何想法,任何人吗?

+3

你的用户名/密码不正确 – Ronnie

+0

如果你的用户名以'_admin'结尾,那么错误信息是怎么说出来的...... _people' ...? – CBroe

+1

将其更改为'$ con = mysqli_connect($ mysql_host,$ mysql_user,$ mysql_password,$ mysql_database);'它会起作用。 –

回答

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, dbnameDocumentation中所述。

解决方案:

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

啊,我现在看到了。是的,000webhost以这个顺序给你变量,所以我认为这是输入它们的正确方法。感谢大家的回复:) – user2867893

+0

@ user2867893不客气。并且不要忘记接受正确的答案。 –

+0

@AndreyVolk你好,只是问你是否需要等待几天才能使连接正常工作?我的设置是正确的,但两天后,我仍然'主机10.1.1.25不允许......'您之前是否遇到过这个问题? –

0

两个可能的原因:

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

  2. 您无法远程连接,只能通过本地主机进行连接。检查您的托管网站的信息。如果不允许,你什么都不能做。

0

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

它也有可能是你的用户名缺少正确的权限要连接到数据库。

+0

我在写回答的时候忘记了,这是可以的。但解决第2页。从我的回答中也会解决这个问题(一个命令)。 –

0

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

这将解决您的问题,当然。

0

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

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地址连接和使用所有表中的任何数据库使用以下syntax-

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

最后,你有使用以下命令 -

FLUSH PRIVILEGES;

重新加载所有权限。

2
argument sequence is following order. 
$host ="localhost" // change to your host 
$username ="root"  // change to your mysql user name by default root 
$pass =" "  //add password if any 
mysql_connect($host,$username,$pass) //don't change the sequence 
mysql_select("test") // create the test database in mysql