Я пытаюсь запустить приложение Symfony 3 в режиме производства на экземпляре Amazon EC2.
У меня есть код в правильном месте, а затем я пытаюсь настроить любые зависимости с композитором, запустив
export SYMFONY_ENV=prod composer install --no-dev --optimize-autoloader
но получить ошибку
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installAssets [Doctrine\DBAL\Exception\ConnectionException] An exception occured in driverL SQLSTATE[HY000] [1044] Access denied for user 'my-user'@'127.0.0.1' to database 'my_database'
Затем эта ошибка передается до [Doctrine\DBAL\Driver\PDOException]
и [PDOException]
до завершения сценария. Затем следует сообщение
[RuntimeException] An error occured when executing the "'assets:install --symlink --rela'\''web'\'''" command:
за которым затем следуют те же ошибки, что и в начале.
Мой файл parameters.yml
parameters: database_host: 127.0.0.1 database_port: 3306 database_name: my_database database_user: my-user database_password: mypassword server_version: 5.6 mailer_transport: smtp mailer_host: 127.0.0.1 mailer_user: null mailer_password: null secret: Mysecret registration_permitted: true registration_limit: 3
и пользователь my-user
имеет все права доступа к базе данных my_database
кроме GRANT.
Я пытался решить это в течение нескольких часов безрезультатно, другие решения, с которыми я столкнулся, включали имена пользователей / паролей / баз данных с ошибками (трижды проверены) или добавляли добавление версии сервера (что не изменило ситуацию).
Дополнительная информация
mysql -u my-user -p
запрашивает пароль, а затем позволяет мне войти в систему. mysql -u my-user -p -D my_database
запрашивает пароль, а затем возвращает ERROR 1044 (42000): Access denied for user 'my-user'@'localhost' to database 'my_database'
. SHOW GRANTS FOR 'my-user';
возвращает ERROR 1141 (42000): There is no such grant defined for user 'my-user' on host '%'
. SHOW GRANTS FOR 'my-user'@'localhost';
возвращает GRANT USAGE ON *.* TO 'my-user'@'localhost' IDENTIFIED BY PASSWORD hashedPassword
. Дополнительная информация 2 После удаления my-user
( 'my-user'@'localhost'
и 'my-user'@'127.0.0.1'
'my-user'@'localhost'
'my-user'@'127.0.0.1'
), а затем 'my-user'@'127.0.0.1'
их, используя GRANT ALL PRIVILEGES ON my_database.* TO 'my-user'@'localhost' IDENTIFIED BY 'password';
а также GRANT ALL PRIVILEGES ON my_database.* TO 'my-user'@'127.0.0.1' IDENTIFIED BY 'password';
а затем FLUSH PRIVILEGES;
Результат SHOW GRANTS FOR 'my-user'@'localhost'
тогда
GRANT USAGE ON *.* TO 'my-user'@'localhost' IDENTIFIED BY PASSWORD 'passwordHash' GRANT ALL PRIVILEGES ON 'my_database' TO 'my-user'@'localhost'
и аналогичный вывод для 'my-user'@'127.0.0.1'
.
Но это все еще дает мне те же ошибки, что и раньше, больше идей?
Как уже говорилось в комментариях, у вас не было привилегий в базе данных. Поэтому выполнение этой проблемы устраняет вашу проблему:
GRANT ALL PRIVILEGES ON my_database.* TO 'my-user'@'localhost'
О вашем сомнении, почему вам пришлось изменить его на localhost в своих параметрах, потому что это то, что вы говорите mysql. Представьте, что вы хотите ограничить доступ к базе данных только определенным IP-адресом в своей сети, которую вы могли бы запустить
GRANT ALL PRIVILEGES ON my_database.* TO 'my-user'@'192.168.1.10'
Поэтому замените 192.168.1.10 на 127.0.0.1, и вы можете использовать 127.0.0.1 в своих параметрах