Не подключается к БД (PDO)

138
09 июня 2019, 14:20
try {
    $dsn = 'mysql:host=localhost;dbname=chat';
    $username = 'chat';
    $password = '1234';
    $options = array(
        PDO::MYSQL_ATTR_INIT_COMMAND = > 'SET NAMES utf8',
    );
    $dbh = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
    echo $e->getMessage();
}

Такая ошибка:

SQLSTATE[HY000] [1045] Access denied for user 'chat'@'localhost' (using password: YES)

Answer 1

Одним из самых необходимых для программиста качеств является способость верить своим глазам. Не воображению, а объективной реальности, данной нам в ощущениях.

В данном случае - сообщению об ошибке. В котором недвусмысленно написано, что у пользователя chat отсутствуют права на подключение а БД. Либо потому что такого пользователя в БД нет, либо потому что указан неверный пароль.

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

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

$dsn = 'mysql:host=localhost;dbname=chat;charset=utf8';
$username = 'chat';
$password = '1234';
$options = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
); 
$dbh = new PDO($dsn, $username, $password, $options);
Answer 2

Скорей всего Вы запускаете скрипт не на той же машине на которой находиться ваша БД. Ваш пользователь создан как пользователь который может авторизоваться в базе только с той машини на которой база запущена. Об этом говорит надпись localhost после @ в имени пользователя 'chat'@'localhost'.

Для того чтобы иметь возможность подключаться из сети к базе(читай запускать скрипт откуда угодно) нужно создать нового пользователя(если такового нет)

CREATE USER 'chat'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON chat.* TO 'chat'@'localhost';
READ ALSO
Вывод матрицы по спирали на C++

Вывод матрицы по спирали на C++

Нужно написать программу, которая будет выводить числа от 1 до n по спирали в таком направлении: 1 в левом верхнем углу, спускаемся вниз, вправо,...

141
Запаздывающие генераторы Фибоначчи (subtract_with_carry_engine)

Запаздывающие генераторы Фибоначчи (subtract_with_carry_engine)

Дали мне задание написать написать генератор случайных чисел методом фибоначчи с запаздываниемЯ нашёл, что subtract_with_carry_engine как раз то что...

222
Variadic templates передача и возврат по ссылке

Variadic templates передача и возврат по ссылке

Возможно ли при передаче пака параметров принять его по ссылке и что-то изменить в одном из параметров?

124