简体   繁体   English

MySQLI 28000/1045用户'root'@'localhost'的访问被拒绝

[英]MySQLI 28000/1045 Access denied for user 'root'@'localhost'

I am having some trouble. 我遇到了麻烦。 So I am trying to connect to my database using MySQLi, but I am getting this error: 因此,我尝试使用MySQLi连接到我的数据库,但出现此错误:

Warning: mysqli::mysqli(): (28000/1045): Access denied for user 'root'@'localhost' (using password: NO) in /home/venge/public_html/library/classes/database.class.php on line 16

Warning: Missing argument 1 for Users::__construct(), called in /home/venge/public_html/routing.php on line 4 and defined in /home/venge/public_html/library/classes/users.class.php on line 3

Warning: mysqli::mysqli(): (28000/1045): Access denied for user 'root'@'localhost' (using password: NO) in /home/venge/public_html/library/classes/database.class.php on line 16

Warning: Cannot modify header information - headers already sent by (output started at /home/venge/public_html/library/classes/database.class.php:16) in /home/venge/public_html/routing.php on line 11

. I have no idea why it says "root" as the user, my code is below. 我不知道为什么它作为用户说“ root”,我的代码在下面。 I can login to PHPMyAdmin with that info fine. 我可以用该信息登录到PHPMyAdmin。

<?php

$db['host'] = 'localhost';
$db['user'] = 'venge_main';
$db['pass'] = 'fakepassword';
$db['name'] = 'venge_panel';


class DB {
    function __construct($db) {
        $this->mysqli = new mysqli($db['host'], $db['user'], $db['pass'], $db['name']);
    }
    function query($i) {
        return $this->mysqli->query($i);
    }
    function fetch_array($i) {
        return $i->fetch_array(MYSQLI_ASSOC);
    }
    function num($i) {
        return $i->num_rows;
    }
}
?>

Here is my global.php file: 这是我的global.php文件:

<?php
session_start();

$venge['library'] = 'library/classes/';

include_once($venge['library'] . 'users.class.php');
include_once($venge['library'] . 'database.class.php');
$users = new Users($database);
?>

Here is my users class: 这是我的用户类:

<?php
class Users {
    public function __construct($db) {
        $this->db = new DB($db);
    }
    public function uidset() {
        if (isset($_SESSION['uid'])) {
            return true;
        } else {
            return false;
        }
    }
    public function securitycheck() {
        if (isset($_SESSION['uid'])) {
            //passed
            return true;
        } else {
            //failed
            die('No permissions');
        }
    }
}
?>

Here is routing.php: 这是routing.php:

<?php
class Routing {
    public function __construct($route) {
        $this->users = new Users();
        $this->route = $route;
    }
    public function File() {
        if (!$this->users->uidset()) {
            switch ($this->route) {
                default:
                    header("Location: /user/login");
                    break;
                case '/user/login':
                    include_once('library/pages/login.page.php');
                    break;
            }
        } else {
            switch ($this->route) {
                default:
                    header("Location: /venge");
                    break;
                case '/venge':
                    echo 'Welcome to <strong>Venge</strong> .';
                    break;
            }
        }
    }
}

$route = new Routing($_SERVER['ORIG_PATH_INFO']);

$route->File();
?>

The reason of the error is here: 错误的原因在这里:

class Routing {
    public function __construct($route) {
        $this->users = new Users();//<-?
        $this->route = $route;
    }

You are not passing a parameter to Users.__construct($db) 您没有将参数传递给Users .__ construct($ db)

Define an array with credentials and pass is like this: 用凭据定义一个数组,并传递如下:

class Routing {
    public function __construct($route) {
        $db = array();
        $db['host'] = 'localhost';
        $db['user'] = 'venge_main';
        $db['pass'] = 'fakepassword';
        $db['name'] = 'venge_panel';

        $this->users = new Users($db);
        $this->route = $route;
    }

Or use a global $db variable instead of defining it locally, like I did. 或者使用全局$ db变量,而不是像我一样在本地定义它。 But you must pass it to constructor when creating Users object. 但是在创建Users对象时必须将其传递给构造函数。

Error in global.php global.php中的错误

$users = new Users($database);

I think, it must be: 我认为必须是:

$users = new Users($db);

If $db is defined in that file. 如果$ db在该文件中定义。

Usually this means that one of your host , database , user or password is wrong. 通常这意味着您的hostdatabaseuserpassword是错误的。

In my case it was the host , I usually use localhost but this time I saw in my cPanel > MySQL® Databases that I should not use localhost and istead I should use mysql5.xxxxxxx.net. 就我而言,它是host ,我通常使用localhost,但是这次我在cPanel > MySQL® Databases看到我不应该使用localhost,而我应该使用mysql5.xxxxxxx.net。

This was the message that helped me: 这是对我有帮助的信息:

The mysql server's address is mysql5.xxxxxxxx.net. mysql服务器的地址是mysql5.xxxxxxxx.net。 When connecting to the mysql server you must specify this host. 连接到mysql服务器时,必须指定该主机。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 SQLSTATE [28000] [1045]用户&#39;root&#39;@&#39;localhost&#39;的访问被拒绝(使用密码:NO) - SQLSTATE[28000][1045] Access denied for user 'root'@'localhost'(using password:NO) 警告:mysqli_connect() [function.mysqli-connect]:(28000/1045):用户&#39;root&#39;@&#39;localhost&#39;的访问被拒绝(使用密码:是) - Warning: mysqli_connect() [function.mysqli-connect]: (28000/1045): Access denied for user 'root'@'localhost' (using password: YES) SQLSTATE [28000] [1045]用户&#39;root&#39;拒绝访问 - SQLSTATE[28000] [1045] Access denied for user 'root' 警告:mysqli_connect():(28000/1045):用户&#39;mobileto&#39;@&#39;localhost&#39;的访问被拒绝(使用密码:NO) - Warning: mysqli_connect(): (28000/1045): Access denied for user 'mobileto'@'localhost' (using password: NO) mysqli_connect(): (28000/1045): 用户 &#39;username&#39;@&#39;localhost&#39; 访问被拒绝(使用密码:YES) - mysqli_connect(): (28000/1045): Access denied for user 'username'@'localhost' (using password: YES) FOSUserBundle-SQLSTATE [28000] [1045]用户&#39;root&#39;@&#39;localhost&#39;的访问被拒绝(使用密码:NO) - FOSUserBundle - SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: NO) 我在 ubuntu 上使用命令 sudo mysql 收到 ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39;(使用密码:NO) - I got ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) with the command sudo mysql on ubuntu SQLSTATE [28000] [1045]用户&#39;root&#39;@&#39;localhost&#39;的访问被拒绝(使用密码:NO)生产中的Laravel - SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: NO) Laravel in production SQLSTATE [28000] [1045]用户&#39;root&#39;@&#39;localhost&#39;的访问被拒绝(使用密码:是) - SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES) PDOException SQLSTATE [28000] [1045]拒绝访问用户&#39;homestead&#39;@&#39;localhost&#39; - PDOException SQLSTATE[28000] [1045] Access denied for user 'homestead'@'localhost'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM