Соединение MySQL8 с php7.3 и Symfony 5 не работает

#php #mysql #symfony

#php #mysql #symfony

Вопрос:

У меня проблема с подключением к базе данных mysql8, php7.3 и Symfony 5. Пользователь и пароль верны!

Подключение к базе данных MySQL8 должно выполняться из SSH-туннеля

SSH-туннель работает :

 ssh -p [remote_machine_port] -N -L [mysql_tunnel_port]: 127.0.0.1: 3306 -i / [directory] / private_key [username] @ [remote_machine_ip]
 

Конфигурация доступа к MySQL:

 GRANT ALL PRIVILEGES ON 'databasename'.* TO '[user]'@'%' WITH GRANT OPTION;
 

Конфигурация доктрины :

 DATABASE_URL='mysql://[user]:[password]@127.0.0.1:[port_tunnel_mysql]/[databasename]'

An exception occurred in driver: SQLSTATE [HY000] [1130] Host '127.0.0.1' is not allowed to connect to this MySQL server
 

У меня такая же проблема с HeidiSQL и на виртуальной машине

Я попробовал с IP виртуальной машины вместо 127.0.0.1

 ssh -p [port_machine_distant] -N -L [port_tunnel_mysql]:[ip_machine_vm]:3306 -i /[directory]/private_key [username]@[ip_machine_distant]
 

Конфигурация доктрины

 DATABASE_URL='mysql://[user]:[password]@[ip_machine_vm]:[port_tunnel_mysql]/[databasename]'

An exception occurred in driver: SQLSTATE [HY000] [2002] Connection refused
 

Однако этот параметр работает с HeidiSQL, но не с приложением Symfony!

Я забыл настройку на виртуальной машине или Mysql?

Комментарии:

1. Если у вас такая же проблема с использованием других инструментов, я бы предположил, что базовая конфигурация неисправна, и это никоим образом не связано с PHP или Symfony

2. Да для настроек 127.0.0.1, но когда я использую ip виртуальной машины, я могу подключиться к heidsql, но не к приложению Symfony

3. Вы можете подключиться через командную строку, без Symfony или PHP?

4. Да, командная строка работает … mysql -u [user] -p

5. Но командная строка mysql -h127.0.0.1 -u [user] -p возвращает ошибку: хосту ‘127.0.0.1’ не разрешено подключаться к этому серверу MySQL

Ответ №1:

проблема с подключением 127.0.0.1: мы создали права ‘[user]’ @ ‘127.0.0.1’. В MySQL 127.0.0.1 использует сеть, а localhost использует сокет.

Сообщение «Сервер запросил метод аутентификации, неизвестный клиенту [caching_sha2_password]» было вызвано тем, что настройка ‘default-authentication-plugin=mysql_native_password’ была создана после создания прав. Мы восстановили права, и теперь все работает нормально.