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

时间:2014-08-07 04:31:24

标签: php mysql database phpmyadmin localhost

  

警告:mysqli_connect():( HY000 / 1045):拒绝访问用户'用户名' @' localhost' (使用密码:YES)在第6行的C:\ Users \ xampp \ htdocs \ PHP_Login_Script \ config.php

     

警告:mysqli_real_escape_string()要求参数1为mysqli,第10行的C:\ Users \ xampp \ htdocs \ PHP_Login_Script \ login.php中给出布尔值

     

警告:mysqli_real_escape_string()要求参数1为mysqli,布尔值在第11行的C:\ Users \ 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,在第19行的C:\ Users \ xampp \ htdocs \ PHP_Login_Script \ login.php中给出null

我在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是我正在处理的教程。

22 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:13)

如果您正在运行wamp update

define("DB_HOST", "localhost");

到您的机器IP地址(我的是192.168.0.25);

define("DB_HOST", "192.168.0.25");

您可以在控制台中键入ipconfig或在mac / linux上输入ifconfig

,在窗口中找到它

答案 2 :(得分:8)

mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);

使用DB_HOST而不是DB_SERVER

答案 3 :(得分:6)

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

答案 4 :(得分:5)

确保您的密码没有特殊字符并且只保留一个普通密码(例如:12345),它会起作用。这是我见过的最奇怪的事情。我花了大约2个小时来解决这个问题。

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

$arr['frequency'] = 'weekly';
$arrs = [
    'weekly' => [11,22,33],
];
var_dump($arrs[$arr['frequency']]);

答案 5 :(得分:3)

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

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

答案 6 :(得分:1)

90%的时间尝试上述答案,这将是您的问题。对我来说,我的问题是我的数据库密码中包含$。

$servername = '127.0.0.1';
$username = 'user_bob';
$password = 'sdfasdf$B';

$conn = mysqli_connect($servername, $username, $password, 'any_database');

//DO NOT USE DOUBLE QUOTES;
//$password = "sdfasdf$B"; 

答案 7 :(得分:1)

这是你的代码:

int sum_up(int arr[], size_t size) { //Function to sum up a C-style array
    int sum = 0;
    for (size_t i = 0; i < size; i++)
        sum += arr[i];
    return sum;
}

int sum_up(array<int, ARR_SIZE> arr) {
    int sum = 0;
    for (size_t i = 0, size = arr.size(); i < size; i++)
        sum += arr[i];
    return sum;
}

int sum_up(vector<int> vec) {
    int sum = 0;
    for (size_t i = 0, size = vec.size(); i < size; i++)
        sum += vec[i];
    return sum;
}

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

  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之后进行了调用。
  2. 下次请更加小心。

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

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

    例如:不要使用PHP语句,尝试将变量声明用作define()

    有一个很好的经历:)

答案 8 :(得分:1)

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

答案 9 :(得分:0)

有人使用XAMPP 8。实际上XAMPP在VM中安装了MySQL,所以通过XAMPP中显示的IP地址连接它。本地主机上没有 MySQL 服务器。 {{3}}

答案 10 :(得分:0)

并不是说输入密码时任何人都可以打开CAPS ...但是它可以给出此错误。

答案 11 :(得分:0)

使用此

设置之后,您将不会再收到此问题

SET PASSWORD FOR root@localhost = PASSWORD('your_root_password');

使用此查询后,我陷入了这个问题

答案 12 :(得分:0)

我已经在此处修复了一些问题,此处定义的“ DB_HOST”也应该位于该位置,并且“ DB_USER”也被称为“ DB_USER”,请始终检查代码是否相同。 >

<?php
    define("DB_HOST", "localhost");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
    define("DB_DATABASE", "");

    $db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
?>

答案 13 :(得分:0)

就我而言,问题是:

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

(双数之前的单数')

答案 14 :(得分:0)

我尝试使用与root设置的用户不同的用户连接时遇到此错误。

在mysql中,我设置了用户MofX与主机%,但它无法连接。

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

答案 15 :(得分:0)

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

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

答案 16 :(得分:0)

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

include

现在,在此处附加您的主机名:例如:

cd /etc/
sudo nano hosts

现在,按如下方式配置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 ); 是您的 IPv4公共IP ,位于35.150.12.345 IP('35 .150.12.345')。

注意:请注意,只有IPV4才能使用'hostname'选项。 hostname,cname,domains将输出数据库连接错误。

答案 17 :(得分:0)

定义参数中存在拼写错误,将 DB_HOST 更改为 DB_SERVER ,将 DB_USER 更改为 DB_USERNAME :< / p>

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

?>

答案 18 :(得分:-1)

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

比工作正常!

答案 19 :(得分:-1)

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

答案 20 :(得分:-2)

尝试更改:

define("DB_SERVER", "localhost");

到此:

define("DB_SERVER", "127.0.0.1");

答案 21 :(得分:-2)

尝试

define("DB_PASSWORD", null);

这些都是警告 试试

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

但我会建议您设置root密码