我收到了php错误
mysqli :: mysqli():( 42000/1044):拒绝用户访问 'sec_user01'@'localhost'到数据库'secure_login'
我用:
创建了数据库CREATE DATABASE `secure_login`;
I created the user with
CREATE USER 'sec_user'@'localhost' IDENTIFIED BY '**********************';
GRANT SELECT, INSERT, UPDATE ON `secure_login`.* TO 'sec_user'@'localhost';
我使用
连接到数据库 include_once 'web_psl-config.php'; // As functions.php is not included
$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);
配置文件已成功包含。 这种情况一直持续到几个小时前。 我能想到的唯一改变的是,在我的PHP脚本中,我创建了一些755访问权限的文件夹。来自执行此脚本的文件的权限是否可能导致此错误?
我真的很难过。
编辑:我使用ADODB连接测试了这个
require('../scripts/adodb5/adodb.inc.php');
$ADODB_CACHE_DIR = 'adodb5cache';
$Host = "localhost";
$Database = "secure_login";
$Databasetype ="mysql";
// lijst users en passwd
$DbAdminUser="sec_user01";
$DbAdminUserPassword="**************";
$debug = true; //debug on
//$debug = false; //debug off
//admin connection
$dbconn = ADONewConnection($Databasetype);
$dbconn->Connect($Host, $DbAdminUser, $DbAdminUserPassword, $Database);
$query="SELECT * FROM members;";
$ammount=$dbconn->GetAll($query);
print_r($ammount);
这是有效的。这是mysqli中的某种错误吗? 我真的希望我不必重写使用ADODB。
答案 0 :(得分:2)
尝试使用这些凭据登录phpmyadmin。如果不成功,那么您的凭据可能不匹配。
答案 1 :(得分:0)
授权声明格式错误
GRANT SELECT, INSERT, UPDATE ON `secure_login`.* TO 'sec_user'@'localhost'; is wrong
GRANT SELECT, INSERT, UPDATE ON secure_login.* TO 'sec_user'@'localhost'; works.
为什么我第一次不知道它是否有效。
答案 2 :(得分:0)
我以前曾经有过几次这个错误,据我所知,这个错误是有限的,很多事情都可能导致它,首先是尝试重置你的密码,你这样做的方式是进入终端并输入。
$ mysqladmin -u root -p'oldpassword'password newpass
发出通知,在oldpassword,密码和newpass中填写您的凭据。
然后尝试我制作的PHP脚本,它会显示你留空的字段,如果它们仍然是空白的话,将使用默认参数。弹出的评论也会在10秒内消失。
档案1
的index.php
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" /><meta http-equiv="content-language" content="en-US" />
<title>MySQL Connection test</title>
<script type="text/javascript">
window.onload = function()
{
timedHide(document.getElementById('messages'), 10);
}
function timedHide(element, seconds)
{
if (element) {
setTimeout(function() {
element.style.display = 'none';
}, seconds*1000);
}
}
</script>
</head>
<body>
<span id="messages">
<?php include "constant.php"; ?>
</span>
</body>
</html>
文件2
constant.php
<?php
$database_ip = ""; //database ip adress goes inside quotes
$database_port = ""; //database port goes inside quotes
$database_name = ""; //database name goes inside quotes
$database_admin_user = ""; //admin username goes inside quotes
$database_admin_pass = ""; //admin password goes inside quotes
//do not modify anything past this point unless you know php well.
$database_link = null;
$database_defaults = array("127.0.0.","3306","MySQL","root","");
$error_defaults = array("error_no_101" => "required field *IP is empty, using default parameters!",
"error_no_102" => "required field *PORT is empty, using default parameters!",
"error_no_103" => "required field *NAME is empty, using default parameters!",
"error_no_104" => "required field *USER is empty, using default parameters!",
"error_no_105" => "required field *PASS is empty, using default parameters!");
if(empty($database_ip)){
$database_ip = $database_defaults[0];
echo $error_defaults["error_no_101"] . "<br/>";
}
if(empty($database_port)){
$database_port = $database_defaults[1];
echo $error_defaults["error_no_102"] . "<br/>";
}
if(empty($database_name)){
$database_name = $database_defaults[2];
echo $error_defaults["error_no_103"] . "<br/>";
}
if(empty($database_admin_user)){
$database_admin_user = $database_defaults[3];
echo $error_defaults["error_no_104"] . "<br/>";
}
if(empty($database_admin_pass)){
$database_admin_pass = $database_defaults[4];
echo $error_defaults["error_no_105"] . "<br/>";
}
$database_link = mysqli_connect($database_ip, $database_admin_user, $database_admin_pass, $database_admin_pass);
if (!$database_link) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
echo 'Success... ' . mysqli_get_host_info($database_link) . "\n";
mysqli_close($database_link);
?>
我希望这有帮助(=
答案 3 :(得分:0)
当您添加除用户权限中的插入选择更新之外的某些权限时,此错误消失! 因此,请使用用户名和数据库名称添加cpanel中的所有权限。
答案 4 :(得分:0)