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

警告: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)

3 years ago

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

3 years ago

如果你正在运行wamp update

define("DB_HOST", "localhost");

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

define("DB_HOST", "192.168.0.25");

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

3 years ago

mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);

使用DB_HOST而不是DB_SERVER

3 years ago

查看代码您定义了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);

3 years ago

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

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

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

3 years ago

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

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

3 years ago

这是你的代码:

<?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';

有一个很好的经历:)

3 years ago

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

3 years ago

定义参数中存在拼写错误,将 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);

?>

3 years ago

使用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.

3 years ago

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

<?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";
  }
?>

3 years ago

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

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

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

3 years ago

就我而言,问题是:

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

(双倍之前的奇数单曲)

3 years ago

尝试

define("DB_PASSWORD", null);

那些是警告尝试

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

但我会建议您设置root密码

3 years ago

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

3 years ago

$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 "

比它工作正常!

3 years ago

尝试改变:

define("DB_SERVER", "localhost");

对此:

define("DB_SERVER", "127.0.0.1");