Php mysqli访问被拒绝(42000/1044)linux权限?

Php mysqli访问被拒绝(42000/1044)linux权限?,php,linux,mysqli,permissions,Php,Linux,Mysqli,Permissions,我得到了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,

我得到了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中的某种bug吗?
我真的希望我不必重写来使用ADODB。

尝试使用这些凭据登录phpmyadmin。如果失败,则您的凭据可能不匹配。

grant语句格式错误

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.

为什么它第一次工作我不知道。

我以前有过几次这个错误,据我所知,这个错误的局限性在于很多因素都可能导致它,首先,也是最重要的是尝试重置密码,你这样做的方式是进入终端并键入密码

$mysqladmin-u root-p'oldpassword'密码newpass

请注意在oldpassword、password和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>

MySQL连接测试
window.onload=函数()
{
timedHide(document.getElementById('messages'),10);
}
函数timedHide(元素,秒)
{
if(元素){
setTimeout(函数(){
element.style.display='none';
},秒*1000);
}
}
文件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);

?>


我希望这有助于(

在用户权限中添加一些权限(插入选择更新除外)时,此错误消失! 因此,使用用户名和数据库名在cpanel中添加所有特权

  • 登录您的cpanel(www.example.com/cpanel)
  • 转到MySQL添加数据库向导
  • 与“添加数据库”、“添加用户”类似,您将有一个按钮 将“用户”添加到“数据库”
  • 点击它
  • 添加的用户应列在该“数据库”的“特权用户”下


  • 当我登录到phpmyadmin时,我可以登录,但我看不到数据库。在表USER\u PRIVILEGES中,我看到被授予的表\u CATALOG PRIVILEGE\u TYPE是\u GRANTABLE'sec\u user01'@'localhost'def用法否,但我不明白为什么我使用ADODB连接时没有问题,但mysqli连接会给我这个错误。请使用phpmyad中的root登录从那开始,你就有特权了!