首页 文章

警告:mysqli_connect():( HY000 / 1045):拒绝用户访问'username' @ 'localhost'(使用密码:YES)

提问于
浏览
25

警告:mysqli_connect():( HY000 / 1045):第6行的C:\ Users \ xampp \ htdocs \ PHP_Login_Script \ config.php中的用户'用户名'@'localhost'(使用密码:YES)拒绝访问警告: mysqli_real_escape_string()期望参数1为mysqli,第10行的C:\ Users \ xampp \ htdocs \ PHP_Login_Script \ login.php中给出布尔值警告:mysqli_real_escape_string()期望参数1为mysqli,C:\ Users \中给出布尔值第11行的xampp \ htdocs \ PHP_Login_Script \ login.php警告:mysqli_query()期望参数1为mysqli,第15行的C:\ Users \ xampp \ htdocs \ PHP_Login_Script \ login.php中给出布尔值警告:mysqli_fetch_array()期望参数1为mysqli_result,在第16行的C:\ Users \ xampp \ htdocs \ PHP_Login_Script \ login.php中给出null警告:mysqli_num_rows()要求参数1为mysqli_result,在C:\ Users \ xampp \ htdocs \中给出null第19行的PHP_Login_Script \ login.php

我在localhost上遇到这个错误,即使我的配置文件是这样的:

<?php

    define("DB_HOST", "localhost");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
    define("DB_DATABASE", "databasename");

    $db = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

?>

这曾经有用,但现在已经没有了 . 这段代码有什么问题或现在不能正常工作吗? This是我正在进行的教程 .

17 回答

  • 13

    你定义为DB_USER,但用作DB_USERNAME . 另外php说用户名@ localhost无法访问 . 不是root @ localhost .

    更改您的定义或连接参数 .

  • 1

    定义参数中存在拼写错误,将 DB_HOST 更改为 DB_SERVER 并将 DB_USER 更改为 DB_USERNAME

    <?php
    
        define("DB_SERVER", "localhost");
        define("DB_USERNAME", "root");
        define("DB_PASSWORD", "");
        define("DB_DATABASE", "databasename");
        $db = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
    
    ?>
    
  • 1

    这是你的代码:

    <?php
    
        define("DB_HOST", "localhost");
        define("DB_USER", "root");
        define("DB_PASSWORD", "");
        define("DB_DATABASE", "databasename");
    
        $db = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
    
    ?>
    

    导致此消息的唯一错误是:

    • 你正在定义一个 DB_USER ,但你正在调用 DB_USERNAME .

    下次请更加小心 .

    对于想要在 PHP 开始编码的入门级程序员来说,最好不要使用他或她不太了解的内容 .

    仅作为建议,请尝试使用(第一次)代码更普遍 .

    例:不要使用 define() 语句,尝试使用变量声明为 $db_user = 'root';

    有一个很好的经历:)

  • -1

    XAMPP 7和opencart Arabic 3也面临同样的问题 . 用实际的机器名替换localhost会重新解决这个问题 .

  • -1

    用户名,主机和密码的组合不允许连接到服务器 . 验证服务器上的权限表(如果需要,重新加载授权)以及您正在连接到正确的服务器 .

  • 0

    如果你正在运行wamp update

    define("DB_HOST", "localhost");
    

    给你的机器ip地址(我的是192.168.0.25);

    define("DB_HOST", "192.168.0.25");
    

    您可以通过在控制台中键入ipconfig或在mac / linux上键入ifconfig在窗口中找到它

  • -1

    mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);

    使用DB_HOST而不是DB_SERVER

  • 0

    查看代码您定义了DB_HOST并查询DB_SERVER . DB_USER和DB_USERNAME使用此代码

    define("DB_SERVER", "localhost");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
    define("DB_DATABASE", "databasename");
    
    $connect = mysqli_connect(DB_SERVER , DB_USER, DB_PASSWORD, DB_DATABASE);
    
  • 5

    确保您的密码没有特殊字符,只保留一个普通密码(例如:12345),它将起作用 . 这是我见过的最奇怪的事情 . 我花了大约2个小时来搞清楚这一点 .

    注意:下面提到的12345是您的普通密码

    GRANT ALL PRIVILEGES ON dbname.* TO 'yourusername'@'%' IDENTIFIED BY '12345';
    
  • 0

    使用AWS RDS MySQL,我遇到了同样的问题 . 刚才,answered类似question这里 . 看了各种各样的消息来源,但截至这个帖子,几乎都缺乏答案 . 虽然这个线程帮助了我,但请记住更新服务器上的主机名 . 访问您的SSH并按照以下步骤操作:

    cd /etc/
    sudo nano hosts
    

    Now, Appending here your hostnames: 例如:

    127.0.0.1 localhost
    127.0.0.1 subdomain.domain.com [if cname redirected to endpoints]
    127.0.0.1 xxxxxxxx.xxxx.xxxxx.rds.amazonaws.com [Endpoints]
    

    现在,按如下方式配置 config/database.php

    $active_group = 'default';
    $query_builder = TRUE;
    
    $db['default'] = array(
        'dsn'   => '',
        'hostname' => '35.150.12.345',
        'username' => 'user-name-here',
        'password' => 'password-here',
        'database' => 'database-name-here',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => TRUE,
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array(),
        'save_queries' => TRUE
    );
    

    其中 35.150.12.345 是您的IPv4公共IP,位于 ec2-dashboard > Network Interfaces > Description : RDSNetworkInterface >> IPv4 Public IP('35.150.12.345')处 .

    Note: Please note that only IPV4 will work at 'hostname' option. hostname, cname, domains will output database connection error.

  • 7

    上面已经回答了这个问题,只是为了让你在连接中同时使用所有四个字符串感觉很舒服

    <?php
      define("DB_HOST", "localhost");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
      define("DB_DATABASE", "databasename");
    
      $db = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
      // you could test connection eventually using a if and else conditional statement, 
      // feel free to take out the code below once you see Connected!
      if ($db) {
        echo "Connected!";
      } else {
        echo "Connection Failed";
      }
    ?>
    
  • 0

    我试图与不同的用户连接时遇到此错误,而不是 root 我设置为限制访问 .

    在mysql中我设置用户 MofX 与主机 % ,它将无法连接 .

    当我将用户的主机更改为 127.0.0.1 时,如'MofX' @ '127.0.0.1',它有效 .

  • 0

    就我而言,问题是:

    define ('DB_PASSWORD', "MyPassw0rd!'");
    

    (双倍之前的奇数单曲)

  • -2

    尝试

    define("DB_PASSWORD", null);
    

    那些是警告尝试

    $db = @mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
    

    但我会建议您设置root密码

  • 6

    你有两个同时连接吗?如果是这样,每次不需要时关闭 .

  • 3
    $db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
    
    Put " DB_HOST " instead of " DB_SERVER " also 
    put " DB_USER " Instead of " DB_USERNAME "
    

    比它工作正常!

  • 11

    尝试改变:

    define("DB_SERVER", "localhost");
    

    对此:

    define("DB_SERVER", "127.0.0.1");
    

相关问题