Предупреждение: 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);
Убедитесь, что ваш пароль не имеет специальных символов и просто сохраняет простой пароль (например: 12345), он будет работать. Это самая странная вещь, которую я когда-либо видел. Я потратил около 2 часов, чтобы понять это.
Примечание: 12345, упомянутый ниже, является вашим простым паролем.
GRANT ALL PRIVILEGES ON dbname.* TO 'yourusername'@'%' IDENTIFIED BY '12345';
вы defIne как DB_USER, но используете как DB_USERNAME. Также php сообщает имя пользователя @localhost cant access. Не root @localhost.
Измените параметр define или connect.
Те же проблемы столкнулись с XAMPP 7 и opencart Arabic 3. Замена 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);
?>
Единственная ошибка, которая вызывает это сообщение, заключается в следующем:
DB_USER
, но вы вызываете его как DB_USERNAME
.В следующий раз будьте осторожны.
Лучше для программиста начального уровня, который хочет начать кодирование в PHP
, чтобы не использовать то, что он или она не знает очень хорошо.
ТОЛЬКО как совет, пожалуйста, попробуйте использовать (в первый раз) код более вездесущим.
ex: не используйте оператор define()
, попробуйте использовать объявление переменных как $db_user = 'root';
Имейте приятный опыт:)
Я исправил несколько вещей здесь, "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);
?>
В моем случае проблема была:
define ('DB_PASSWORD', "MyPassw0rd!'");
(нечетный сингл перед двойником)
У меня была эта ошибка, пытающаяся подключиться к другому пользователю, чем root
, которую я установил бы для ограничения доступа.
В mysql я бы установил пользователя MofX
с хостом %
, и он не подключился.
Когда я изменил хост пользователя на 127.0.0.1
, как в 'MofX'@'127.0.0.1', он сработал.
Ответ на этот вопрос выше, просто чтобы вы чувствовали себя комфортно, используя все четыре строки одновременно в соединении
<?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";
}
?>
Аналогичная проблема возникает со мной, с 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, домены выведут ошибку подключения к базе данных.
В определении аргументов есть опечатка, измените 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);
?>
Есть ли у вас два подключения одновременно? Если это так, закройте каждый раз, когда вам это не понадобится.
Попробуйте изменить:
define("DB_SERVER", "localhost");
:
define("DB_SERVER", "127.0.0.1");
попробуйте
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 "
чем он работает нормально!