Раздел вопрос-ответ На PHP Access denied for user 'root'@'localhost', хотя через консоль подключается

При подключении к серверу через ssh могу без проблем подключаться к mysql с пустым паролем:

mysql -uroot -hlocalhost

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| development        |
| mysql              |

Но если я пробую подключаться к mysql из-под php, то возникает ошибка:

Access denied for user 'root'@'localhost' (using password: NO) 

Простейший php-код для проверки:

$ php -r "mysql_connect('localhost', 'root', '');";
PHP Warning:  mysql_connect(): Access denied for user 'root'@'localhost' (using password: NO) in Command line code on line 1

Или такая ошибка, если использовать PDO:

PDOException: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)

Т.е. насколько я понимаю, проблема в том что php не может подключиться к mysql с пустым паролем. Как решить эту проблему?

Такая проблема на codeship при запуске тестов CI.

share

1 ответ

Сам только что столкнулся. По факту нужно поменять плагин для авторизации, по-умолчанию там через сокет как-то это работает.

update mysql.user set authentication_string=PASSWORD(""), plugin="mysql_native_password" 
  where User='root' and Host='localhost';

Ну и не забыть:

flush privileges;

 

Спасибо! Это помогло мне в другой проблеме)
Надо оговориться, что чтобы выполнить этот запрос, нужно предварительно подключиться к mysql: sudo mysql -uroot подключение успешно. После выполнения вашего запроса могу уже без sudo.
–  digest 7 месяцев назад
Ну и не забыть
flush privileges;
–  anonymous 8 месяцев назад
Добавить комментарий
    как минимум 5 символов

    icon Вход в систему

    зарегистрироваться
    НОВЫЕ ПОЛЬЗОВАТЕЛИ