Сообщение Codeigniter: mysqli_connect (): (HY000 / 1045): доступ запрещен для драйвера пользовательского DB [дубликат]

Используйте последовательный цикл for:

var myStringArray = ["Hello","World"];
var arrayLength = myStringArray.length;
for (var i = 0; i < arrayLength; i++) {
    alert(myStringArray[i]);
    //Do something
}

@zipcodeman предлагает использовать инструкцию for...in, но для итерации массивов for-in следует избегать, этот оператор предназначен для перечисления свойства объекта.

Его нельзя использовать для объектов типа массива, потому что:

  • Порядок итерации не гарантируется, индексы массива могут не посещаться в числовых порядок.
  • Унаследованные свойства также перечислены.

Во-вторых, это может дать вам массу проблем, например, если вы расширите Array.prototype объект, чтобы включить в него метод, это свойство также будет перечислено.

Например:

Array.prototype.foo = "foo!";
var array = ['a', 'b', 'c'];

for (var i in array) {
  alert(array[i]);
}

Вышеупомянутый код будет предупреждать: «a», «b», «c »и« foo! ».

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

for-in как я уже говорил, есть перечислять свойства объекта , например:

var obj = {
  "a": 1,
  "b": 2,
  "c": 3
};

for (var prop in obj) {
  if (obj.hasOwnProperty(prop)) { 
  // or if (Object.prototype.hasOwnProperty.call(obj,prop)) for safety...
    alert("prop: " + prop + " value: " + obj[prop])
  }
}

В приведенном выше примере e hasOwnProperty метод позволяет вам перечислять только собственные свойства , вот и все, только свойства, которые физически имеют объект, никаких унаследованных свойств.

Я бы рекомендовал вам прочитать в следующей статье:

23
задан Rizier123 16 December 2015 в 14:33
поделиться

16 ответов

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

11
ответ дан Ignacio Vazquez-Abrams 23 August 2018 в 17:44
поделиться
$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 " 

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

-1
ответ дан 2 revs, 2 users 71% 23 August 2018 в 17:44
поделиться

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

1
ответ дан Ahmed Bahtity 23 August 2018 в 17:44
поделиться

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

-1
ответ дан BoltClock 23 August 2018 в 17:44
поделиться

Аналогичная проблема возникает со мной, с 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, домены выведут ошибку подключения к базе данных.

0
ответ дан Community 23 August 2018 в 17:44
поделиться

попробуйте

define("DB_PASSWORD", null);

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

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

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

-1
ответ дан fabribara 23 August 2018 в 17:44
поделиться

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

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

3
ответ дан headersalreadysent 23 August 2018 в 17:44
поделиться

Посмотрите на свой код. Вы определили 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);
5
ответ дан hemanth kumar 23 August 2018 в 17:44
поделиться

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

define("DB_HOST", "localhost");

На ваш ip-адрес вашего компьютера (my is 192.168.0.25);

define("DB_HOST", "192.168.0.25");

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

11
ответ дан hooligan 23 August 2018 в 17:44
поделиться

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

?>
0
ответ дан joan16v 23 August 2018 в 17:44
поделиться

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

define("DB_SERVER", "localhost");

на следующее:

define("DB_SERVER", "127.0.0.1");
-2
ответ дан Kevin Guan 23 August 2018 в 17:44
поделиться
[Д0] mysqli_connect (DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

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

7
ответ дан moez 23 August 2018 в 17:44
поделиться

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

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

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

0
ответ дан ourmandave 23 August 2018 в 17:44
поделиться

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

<?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";
  }
?>
0
ответ дан Precious Tom 23 August 2018 в 17:44
поделиться

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

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

GRANT ALL PRIVILEGES ON dbname.* TO 'yourusername'@'%' IDENTIFIED BY '12345';
3
ответ дан Sathya 23 August 2018 в 17:44
поделиться

Это ваш код:

<?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, но вы вызов [as] как DB_USERNAME.

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

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

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

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

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

1
ответ дан tmthydvnprt 23 August 2018 в 17:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: