Неперехваченное исключение PDOException: SQLSTATE[HY000] [1045] Доступ запрещен для пользователя ‘dbuser’ @’localhost’ (с использованием пароля: ДА)

#pdo #mariadb

#pdo #mariadb

Вопрос:

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

Я пытаюсь подключиться к mariadb10, который находился на сервере в моей сети
Я пытаюсь подключиться со своего локального хостинга.

Если я попытаюсь в своем терминале:

 myuser@mylocalComputer ~ $ mysql -h myserver -P 3307 -u mydbuser -pmyconfidentalpassword
  

все работает нормально!!

Но если я попытаюсь подключиться с помощью php scrypt с помощью pdo, я получу сообщение об ошибке:

 <?php
$dsn = 'mysql: host=myserver:3307;dbname=mydbname';
$username = 'mydbuser';
$password = 'myconfidentalpassword';
$options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
); 
$dbh = new PDO($dsn, $username, $password, $options);
   if(! $dbh ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'select * from foo;';
   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {
      die('Could not select data: ' . mysql_error());
   }

   echo "Synced data successfullyn";
   mysql_close($conn);

?>
  

Ошибка заключалась в:

Фатальная ошибка PHP: Неперехваченное исключение PDOException: SQLSTATE [HY000] [1045] Доступ запрещен для пользователя ‘mydbuser’ @’localhost’ (с использованием пароля: ДА) в /home/myuser /Projekte/Hibiscus_extend/Hib_Nightly_sync.php:8

Трассировка стека:

/home/myuser/Projekte/Hibiscus_extend/Hib_Nightly_sync.php (8): PDO->__construct(‘mysql: host=myse…’, ‘mydbuser’, ‘myconfidentalpassword’, массив)

введено {main} /home/myuser/Projekte/Hibiscus_extend/Hib_Nightly_sync.php в строке 8

Что я сделал не так и где?

Ответ №1:

О, О, О!
Я нашел решение! Причиной проблемы с подключением были просто пустые места в $ dsn

Неверно:
$dsn = ‘mysql: host=myserver: 3307;dbname=mydbname’;

работает нормально
$dsn = ‘mysql: host=myserver: 3307;dbname=mydbname’;