Подтвердить что ты не робот

Проблема с базой данных Laravel 5

Я успешно установил laravel 5 с помощью этой команды:

composer create-project laravel/laravel test-laravel-5-project dev-develop --prefer-dist

Я даже проверил версию установленного laravel с помощью команды php artisan -V. Выходной сигнал был

Laravel Framework version 5.0-dev

Затем я пошел в app/config/database.php, дал dafault db как mysql и дал конфигурации как

'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'Logintestfive'), 'username'=> env('DB_USERNAME', 'root'), 'password'=> env('DB_PASSWORD', 'manasa'), 'charset'=> 'utf-8', 'collation'=> 'utf-8_unicode_ci', prefix=> '', 'strict'=> false, ]

Затем я пошел к localhost:8000/auth/register и заполнил форму и отправил данные, и это ошибка, которую я получил:

PDOException in Connector.php line 47: SQLSTATE[28000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)

Но я не использовал laravel homestead для установки laravel 5 в своей системе и не использовал vagrant для настройки laravel homestead. И он говорит мне вот так:

in Connector.php line 47
at PDO->__construct('mysql:host=localhost;dbname=homestead', 'homestead', 'secret', array('0', '2', '0', false, '0')) in Connector.php line 47
at Connector->createConnection('mysql:host=localhost;dbname=homestead', array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql'), array('0', '2', '0', false, '0')) in MySqlConnector.php line 20
at MySqlConnector->connect(array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql')) in compiled.php line 10545
at ConnectionFactory->createSingleConnection(array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql')) in compiled.php line 10541
at ConnectionFactory->make(array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false), 'mysql') in compiled.php line 10459

Как я могу исправить эти проблемы?

4b9b3361

Ответ 1

У меня возникла аналогичная проблема. Я начал свой сервер с помощью команды php artisan serve и отредактировал файл .env и обновил веб-страницу, которая не отражала никаких изменений!

Я исправил его, остановив веб-сервер, отредактировав файл .env.php и перезапустив веб-сервер!

Итак, я думаю, это кеширование-вопрос файла .env.php.

Ответ 2

Laravel 5.1.10
Как ответы, уже приведенные выше Ганешем и Йорди, но я объединяя их обоих в один.

Проблема:
Когда я пытаюсь создать базу данных в phpmyAdmin и хочу создать схему/таблицу через службу строителя Laravel Schema, я получил следующие ошибки:

PDOException в строке Connector.php 50: SQLSTATE [HY000] [1045] Доступ запрещен для пользователя 'homestead' @'localhost' (с использованием пароля: YES)
в строке Connector.php 50
в PDO → __ construct ('mysql: host = localhost; dbname = homestead', 'homestead', 'secret', array ('0', '2', '0', false, '0'))
в строке Connector.php 50
 в Connector- > createConnection ('mysql: host = localhost; dbname = homestead', array ('driver' = > 'mysql', 'host' = > 'localhost', 'database' = > 'homestead', 'username' = > 'homestead', 'password' = > 'secret', 'charset' = > 'utf8', 'collation' = > 'utf8_unicode_ci', 'prefix' = > '', 'strict' = > false, 'name '= > ' mysql '), array (' 0 ',' 2 ',' 0 ', false,' 0 ')) в строке MySqlConnector.php 22     на MySqlConnector- > connect (массив ('driver' = > 'mysql', 'host' = > 'localhost', 'database' = > 'homestead', 'username' = > 'homestead', 'password' = > ' secret ',' charset '= > ' utf8 ',' collation '= > ' utf8_unicode_ci ',' prefix '= > ' ',' strict '= > false,' name '= > ' mysql ')).............

Решение 1:
Затем я понял, что проблемы были в файле env, я забыл изменить значения в файле env. Файл .env находится в корневом каталоге laravel 5 откройте файл и измените следующие значения с помощью

DB_DATABASE = localhost,
DB_USERNAME = имя_базы данных,
DB_PASSWORD = databse-user-password

Решение 2:
Или измените файл database.php без env() как Ganesh syas:

    // instead of this block
    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'your database name'),
        'username'  => env('DB_USERNAME', 'your database username'),
        'password'  => env('DB_PASSWORD', 'your database password'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

    // use this one

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'your database name',
        'username'  => 'your database username',
        'password'  => 'your database password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ]

Оба решения работали для меня.

Ответ 3

Laravel использует переменные, содержащиеся в вашем файле .env.

От: http://laravel.com/docs/master/configuration

Часто бывает полезно иметь разные значения конфигурации на основе среды, в которой работает приложение. Например, вы можете использовать другой драйвер кэша локально, чем на своем производственном сервере. Легко использовать конфигурацию на основе среды.

Laravel использует библиотеку DotEnv PHP от Vance Lucas. В новой установке Laravel корневой каталог вашего приложения будет содержать файл .env.example. Если вы установите Laravel через Composer, этот файл будет автоматически переименован в .env. В противном случае вы должны переименовать файл вручную.

Все переменные, перечисленные в этом файле, будут загружены в супер-глобальный PHP $_ENV, когда ваше приложение получит запрос. Вы можете использовать помощник env для извлечения значений из этих переменных. Фактически, если вы просмотрите конфигурационные файлы Laravel, вы заметите несколько параметров, уже использующих этот помощник!

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

Если вы работаете с командой, вы можете продолжить использовать файл .env.example в своем приложении. Поместив значения place-holder в примерный файл конфигурации, другие разработчики в вашей команде могут четко видеть, какие переменные среды необходимы для запуска вашего приложения.

Файл .env по умолчанию выглядит примерно так:

APP_ENV=local
APP_DEBUG=true
APP_KEY=YOUR_KEY_HERE

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file

Ответ 4

У меня такая же проблема. После использования команды "php artisan config: clear", чтобы очистить старый файл кеша конфигурации, он может работать. Возможно, вы можете попробовать.

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

Ответ 5

Laravel использует файл .env, поэтому измените файл .env или измените файл database.php без env()

'mysql' => [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'your database name',
        'username'  => 'your database username',
        'password'  => 'your database password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ]

Ответ 6

В Config- > database.php

'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'DBName'),
        'username' => env('DB_USERNAME', 'root'),
        'password' => env('DB_PASSWORD', ''),
        'charset' => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix' => '',
        'strict' => false,
        'engine' => null,
    ],

В файле .env:

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=DBName
DB_USERNAME=root
DB_PASSWORD=

Закройте сервер приложений laravel и снова перезапустите его для очистки кеша.

  php artisan serve

Или вы можете сделать:

  php artisan config:clear

Это очистит кеш в файлах конфигурации.

Теперь это определенно сработает! Ура!

Ответ 7

У меня была очень похожая проблема, и я не знал, где искать. Я очистил кеш, перезапустил сервер и т.д., Без радости. Пока я не нашел его...

Прежде чем я вернусь к предыдущей версии в репозитории Git, я использовал мой драйвер сеанса для использования базы данных! Глупо, но это не обязательно соединение с базой данных, что вам нужно посмотреть, но вместо этого вы вызываете базу данных, которая будет использоваться в первую очередь.

Я надеюсь, что кто-то, кто окажется на этой странице так, как я сделал, найдет это полезным.

Ответ 8

i имеет один и тот же выпуск, отредактируйте файл .env в корневой папке и измените конфигурацию базы данных DB_DATABASE DB_USERNAME DB_PASSWORD

Ответ 9

Внутри вашего laravel например. c:/www/laravel, создайте новый каталог под названием "local" внутри app/config.Copy database.php(app/config/database.php). Это работает для меня.

Ответ 10

Да, у меня были те же проблемы, когда все прошло хорошо, начиная с установки миграции до миграции php artisan. Но когда я попытался создать пользователя, доступ запрещен.

Решение, которое я нашел, заключалось в том, чтобы закрыть ctrl + d, чтобы завершить работу сервера и перезапустить. Я работал...:)

Ответ 11

вы можете перезагрузить сервер Я думаю, что это ошибка ловушки в Laravel, поэтому запустите свой сервер снова с помощью "php artisan serve" и обновите страницу своего веб-сайта. ОК.

Ответ 12

для меня

sudo service apache2 reload

выполнила работу