Предупреждение: mysqli_connect(): (HY000/1045): доступ запрещен для имени пользователя '@' localhost '(с использованием пароля: YES)

Предупреждение: mysqli_connect(): (HY000/1045): доступ запрещен для пользователя 'username' @'localhost' (с использованием пароля: YES) в C:\Users\xampp\htdocs\PHP_Login_Script\config.php в строке 6

Предупреждение: mysqli_real_escape_string() ожидает, что параметр 1 будет mysqli, boolean задан в C:\Users\xampp\htdocs\PHP_Login_Script\login.php в строке 10

Предупреждение: mysqli_real_escape_string() ожидает, что параметр 1 будет mysqli, boolean задан в C:\Users\xampp\htdocs\PHP_Login_Script\login.php в строке 11

Предупреждение: mysqli_query() ожидает, что параметр 1 будет mysqli, boolean задан в C:\Users\xampp\htdocs\PHP_Login_Script\login.php в строке 15

Предупреждение: mysqli_fetch_array() ожидает, что параметр 1 будет mysqli_result, null указан в C:\Users\xampp\htdocs\PHP_Login_Script\login.php в строке 16

Предупреждение: mysqli_num_rows() ожидает, что параметр 1 будет mysqli_result, null указан в C:\Users\xampp\htdocs\PHP_Login_Script\login.php в строке 19

Я получаю эту ошибку выше на локальном хосте, даже если мой файл конфигурации выглядит следующим образом:

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

?>

Это работало, но теперь этого больше нет. Есть ли какие-либо проблемы с этим кодом или он не работает сейчас? Это - это учебник, над которым я сейчас работаю.

Ответы

Ответ 1

Эта комбинация имени пользователя, хоста и пароля не разрешается подключаться к серверу. Проверяйте таблицы разрешений (при необходимости перезагружая гранты) на сервере и подключайтесь к правильному серверу.

Ответ 2

Если вы запускаете обновление wamp

define("DB_HOST", "localhost");

К вашим IP-адресам вашей машины (мой - 192.168.0.25);

define("DB_HOST", "192.168.0.25");

Вы можете найти его в окне, набрав ipconfig в консоли или ifconfig на mac/linux

Ответ 3

mysqli_connect (DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

используйте DB_HOST вместо DB_SERVER

Ответ 4

Убедитесь, что ваш пароль не имеет специальных символов и просто сохраняет простой пароль (например: 12345), он будет работать. Это самая странная вещь, которую я когда-либо видел. Я потратил около 2 часов, чтобы понять это.

Примечание: 12345, упомянутый ниже, является вашим простым паролем.

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

Ответ 5

Посмотрите на свой код Вы определили 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);

Ответ 6

вы defIne как DB_USER, но используете как DB_USERNAME. Также php сообщает имя пользователя @localhost cant access. Не root @localhost.

Измените параметр define или connect.

Ответ 7

Это ваш код:

<?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, чтобы не использовать то, что он или она не знает очень хорошо.

ТОЛЬКО как совет, пожалуйста, попробуйте использовать (в первый раз) код более вездесущим.

ex: не используйте оператор define(), попробуйте использовать объявление переменных как $db_user = 'root';

Имейте приятный опыт:)

Ответ 8

Те же проблемы столкнулись с XAMPP 7 и opencart Arabic 3. Замена localhost на фактическое имя машины решает проблему.

Ответ 9

Я исправил несколько вещей здесь, "DB_HOST", определенный здесь, должен быть также 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);
?>

Ответ 10

В определении аргументов есть опечатка, измените 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);

?>

Ответ 11

Аналогичная проблема возникает со мной, с AWS RDS MySQL. Только сейчас ответил аналогичный вопрос здесь. Посмотрел различные источники, но по этой теме почти весь недостаток ответа. Хотя этот поток помог мне, подстройте его для обновления имен хостов на сервере. Войдите в свой SSH и выполните следующие действия:

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

где 35.150.12.345 - ваш IPv4 общедоступный IP-адрес, расположенный в ec2-dashboard > Network Interfaces > Description : RDSNetworkInterface >> IPv4 Public IP ('35.150.12.345 ').

Примечание. Обратите внимание, что только IPV4 будет работать с параметром "имя хоста". hostname, cname, домены выведут ошибку подключения к базе данных.

Ответ 12

Ответ на этот вопрос выше, просто чтобы вы чувствовали себя комфортно, используя все четыре строки одновременно в соединении

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

Ответ 13

У меня была эта ошибка, пытающаяся подключиться к другому пользователю, чем root, которую я установил бы для ограничения доступа.

В mysql я бы установил пользователя MofX с хостом %, и он не подключился.

Когда я изменил хост пользователя на 127.0.0.1, как в 'MofX'@'127.0.0.1', он сработал.

Ответ 14

В моем случае проблема была:

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

(нечетный сингл перед двойником)

Ответ 15

Используйте это

Посленастройки вы больше не будете получать эту проблему

SET PASSWORD FOR [email protected] = PASSWORD('your_root_password');

Я застрял в этой проблеме после того, как использовал этот запрос, все было решено

Ответ 16

Есть ли у вас два подключения одновременно? Если это так, закройте каждый раз, когда вам это не понадобится.

Ответ 17

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

чем он работает нормально!

Ответ 18

попробуйте

define("DB_PASSWORD", null);

и это предупреждения попробуйте

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

Но я рекомендую вам установить пароль root

Ответ 19

Попробуйте изменить:

define("DB_SERVER", "localhost");

:

define("DB_SERVER", "127.0.0.1");