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

时间:2014-02-17 12:23:30

标签: 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, 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。

5 个答案:

答案 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)

  1. 登录您的cpanel(www.example.com/cpanel)
  2. 转到MySQL添加数据库向导
  3. 类似于&#34;添加数据库&#34;,&#34; add_user&#34;你会有一个按钮 添加用户&#34;到&#34;数据库&#34;。
  4. 点击它,
  5. 添加的用户应列在&#34;特权用户&#34;对于那个&#34;数据库&#34;。