在这里快速提问,我是网络托管的新手,我只是在瞎逛看看是什么。我创建了以下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个字段的小表:
并输入每个数据。 当我从控制面板打开文件时,出现以下错误:
警告: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'(使用密码:是)
任何想法,任何人?
答案 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)
两个可能的原因:
用户名/密码错误 - 请仔细检查。
您无法远程连接,只允许通过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 连接,并为指定数据库中的所有表提供所有权限。
grant all on *.* to '%'@'%' identified by 'password'
最后你必须使用以下命令 -
FLUSH PRIVILEGES;
重新加载所有权限。