Предупреждение: 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); ?> 

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

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

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

 define("DB_HOST", "localhost"); 

К вашим IP-адресам компьютеров (мой – 192.168.0.25);

 define("DB_HOST", "192.168.0.25"); 

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

mysqli_connect (DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

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

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

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

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

Это ваш код:

 <?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. вы определяете DB_USER но вы вызываете его как DB_USERNAME .

Пожалуйста, будьте осторожны в следующий раз.

Лучше для программиста начального уровня, который хочет начать кодирование в PHP чтобы не использовать то, что он или она не знает очень хорошо.

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

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

Приятного опыта 🙂

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

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

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

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

Аналогичная проблема возникает со мной, с 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 Public IP , расположенный на ec2-dashboard > Network Interfaces > Description : RDSNetworkInterface >> IPv4 Public IP ('35 .150.12.345 ').

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

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

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

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

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

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

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

пытаться

 define("DB_PASSWORD", null); 

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

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

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

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

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

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

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

 define("DB_SERVER", "localhost"); 

к этому:

 define("DB_SERVER", "127.0.0.1");