Доступ запрещен для пользователя 'homestead' @ 'localhost' (используя пароль: да)

я на Mac OS Yosemite, используя Laravel 5.0.

в свое время местные окружающая среда, я бегу php artisan migrate Я :

enter image description here

конфигурация

вот мой .env

APP_ENV=local
APP_DEBUG=true
APP_KEY=*****

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

appconfigdatabase.в PHP

   'mysql'       => [
    'driver'      => 'mysql',
    'host'        => env('DB_HOST', 'localhost'),
    'database'    => env('DB_DATABASE', 'homestead'),
    'username'    => env('DB_USERNAME', 'homestead'),
    'password'    => env('DB_PASSWORD', 'secret'),
    'unix_socket' => '/tmp/mysql.sock',
    'charset'     => 'utf8',
    'collation'   => 'utf8_unicode_ci',
    'prefix'      => '',
    'strict'      => false,
    ]

Как избежать такого рода ошибок ?

я пробовал :


1

на приложение / база данных.в PHP

заменить localhost С 127.0.0.1

'host'=> env('DB_HOST', 'localhost') -->'host' => env('DB_HOST', '127.0.0.1')

кроме того, в .env

DB_HOST=localhost -->DB_HOST=127.0.0.1


2

попробуйте указать среды

php artisan migrate --env=local


3

проверьте, работает ли MySQL по run

mysqladmin -u homestead -p status Enter password: secret

я получил

Uptime: 21281 Threads: 3 Questions: 274 Slow queries: 0 Opens: 327 Flush tables: 1 Open tables: 80 Queries per second avg: 0.012

что означает, что это работает.


4

Проверьте MySQL UNIX сокет (этот шаг работает для меня)

23 ответов


причина отказа в доступе для пользователя 'homestead' @ 'localhost' laravel 5 ошибка кэширование-вопрос of the .env.php файл причина Laravel 5 использует конфигурацию на основе среды в вашем .файл env.

1. Перейдите в корневой каталог приложения и откройте его .env-файл (в ubuntu может быть скрыт, поэтому нажмите ctrl+h чтобы показать скрытые файлы и если вы находитесь в терминале, введите:ls -a показать скрытые файлы) в Редакторе и измените настройку конфигурации базы данных. тогда спаси свою .файл env

DB_HOST=localhost
DB_DATABASE=laravelu
DB_USERNAME=root
DB_PASSWORD=''

2. затем перезапустите сервер apache / веб-сервер. и обновите свою страницу, и вы сделали

3. Если все еще проблема, попробуйте выполнить команду ниже, чтобы очистить старый файл кэша конфигурации.

php artisan config:clear

Теперь вы закончили с ошибкой


TLDR:вам нужно остановить сервер Ctrl + c и начните снова использовать php artisan serve


детали:

если вы используете Laravel и уже запустили локальный сервер dev php artisan serve

и после того, как выше сервер уже запущен, вы меняете свой сервер базы данных, связанный с материалом .файл env. Например, переход от MySQL к SQLite или что-то в этом роде. Вы должны убедиться, что вы остановитесь над процессом, т. е. Ctrcl C или что-нибудь, что остановит процесс. А затем перезапустить ремесленника снова, т. е. y php artisan serve и обновить браузер и ваша проблема, связанная с базой данных будет исправлена. Это работало для меня что Laravel 5.3


два способа решить

Первый способ (не рекомендуется)

откройте файл конфигурации базы данных (laravel_root / config / database.php) & поиск приведенного ниже блока кода.

        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'blog'),
        'username'  => env('DB_USERNAME', 'root'),
        'password'  => env('DB_PASSWORD', ''),

изменить блок кода, как показано ниже

        'host'      => 'yourHostName',
        'database'  => 'YourDatabastName',
        'username'  => 'YoutDatabaseUsername',
        'password'  => 'YourDatabasePassword',

Второй способ (рекомендуется Laravel)

проверьте свой корень Laravel там есть вызов файла .env если не существует, ищите .env.например, скопируйте / переименуйте его как .ОКР после что файл выглядит blow !

APP_ENV=local
APP_DEBUG=true
APP_KEY=someRandomNumber

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

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null

измените приведенный ниже блок следующим образом

DB_HOST=yourHostName
DB_DATABASE=yourDatabaseName
DB_USERNAME=yourDatabaseUsername
DB_PASSWORD=youPassword

теперь он будет работать нормально.


Если вы используете веб-сервер PHP по умолчанию (например,php artisan serve) вам нужно перезагрузить сервер после изменения вашего .файл env значения.


если вы используете php artisan migrate не из коробки vagrant, а из главной машины, тогда вы должны определить внутри .env ip коробки 192.168.10.10

и, очевидно, установить разрешение на усадьбу пользователя с вашего ip что-то вроде

grant all privileges on *.* to 'homestead'@% identified by 'secret';

на

DB_HOST=192.168.10.10
DB_DATABASE=homestead
DB_USERNAME=homestead

при установке Homestead, это создает по умолчанию " усадьба" база данных в виртуальной машине. Вы должны SSH в VM homestead ssh и запустить миграция оттуда. Если вы работаете локально без виртуальной машины, вам нужно будет создать базу данных вручную. По умолчанию база данных должен называться homestead, имя пользователя homestead и пароль - это секрет.

проверить это нить на laracasts или это блоге дополнительные подробности


если вы получаете

[PDOException] SQLSTATE[HY000] [2002] No such file or directory

попробуйте изменить "хост" в /app/config/database.php файл от "localhost" до "127.0.0.1". вы можете найти более подробную информацию и другие исправления здесь на этом нить.

также проверьте, правильно ли вы указали unix_socket . проверьте это нить .


У меня была такая же проблема, и в конце концов оказалось, что мне просто нужно перезапустить сервер и начать снова

Ctrl + c затем

php artisan serve

в Windows PC следуйте ниже.


  1. доступ к корневой папке приложения.

  2. редактировать .файл env

Access Root folder of your application

Edit the .env File

отредактируйте выделенное и измените имя пользователя и пароль adn имя базы данных соответственно.


Проверьте MySQL UNIX Socket

найти unix_socket местоположение с помощью MySQL

mysql -u homestead -p

mysql> show variables like '%sock%';
+-----------------------------------------+-----------------------------+
| Variable_name                           | Value                       |
+-----------------------------------------+-----------------------------+
| performance_schema_max_socket_classes   | 10                          |
| performance_schema_max_socket_instances | 322                         |
| socket                                  | /var/run/mysqld/mysqld.sock |
+-----------------------------------------+-----------------------------+
3 rows in set (0.00 sec)

теперь конфигурация / база данных.в PHP

обновить эту строку : 'unix_socket' => '/tmp/mysql.sock',

в : 'unix_socket' => '/var/run/mysqld/mysqld.sock',

вот и все. Это работает для меня как моя 4-я попытка.Надеюсь, эти шаги кому-то помогут. : D


когда-нибудь в будущем. Сначала попробуйте очистить конфигурацию

php artisan config:clear. 

закройте все окна terminal /cmd, а затем перезапустите terminal/CMD, и это должно избавиться от сообщения об ошибке. Посмотрим, сработает ли.


получил его! Войдите в систему как root и предоставьте homestead@localhost права на все.

из вашего терминала:

$ homestead ssh

$ mysql -u root -p

Enter password: secret

mysql> grant all privileges on *.* to 'homestead'@'localhost' identified by 'secret';

Query OK, 0 rows affected (0.00 sec)
exit

теперь обычный пользователь homesteads имеет доступ ко всем вашим таблицам и, как таковой, должен иметь возможность запускать такие вещи, как миграции.


после смены .env с новой конфигурацией вы должны остановить сервер и запустить его снова (php artisan serve). Причина laravel получает среду при инициализации сервера. Если вы не перезагрузитесь, вы измените .env спрашивает себя, почему изменения не происходят!!


Я использую laravel 5.* я полагаю, что у меня есть вызов файла .env в корне проекта, который выглядит примерно так:

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString

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

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

и это было над написанием конфигурации bd, чтобы вы могли удалить эти конфигурационные Вары, чтобы laravel взял конфигурацию под /config или настроил вашу конфигурацию здесь.

Я сделал второй и это работает для меня :)


Я просто хотел опубликовать это, потому что эта проблема расстроила меня около 3 часов сегодня. Я не пробовал любой из методов, перечисленных в других ответах, хотя все они кажутся обоснованными. На самом деле, я как раз собирался попробовать пройти через каждое из предложенных выше решений, но каким-то образом я получил этот удар вдохновения. Вот что сработало для меня, чтобы заставить меня снова работать - YMMV:

1) Найти свой .файл env. 2) переименовать .env файл на что-то еще. Laravel 5 должен использовать это файл переопределения параметров где-то еще в рамках. Я переименовал свой .env.старый 3) Вам может потребоваться перезагрузить веб-сервер, но мне это не нужно.

удачи!


Проверьте ".env файл" в корневой папке. правильно ли это?

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

после перезапуска конфигурации db:

 php artisan serve

если подача активна перед установкой конфигурации db.


вы должны запустить $ php artisan migrate команда изнутри Homestead, а не ваш Mac.


У меня есть решение

  1. перейдите в корневой каталог приложения и открытые .env-файл (в ubuntu он может быть скрыт, поэтому нажмите ctrl+h, чтобы показать скрытые файлы) в редакторе и измените настройку конфигурации базы данных. тогда спаси свою .файл env

  2. затем перезапустите сервер apache / веб-сервер. и обновите свою страницу, и вы сделали

  3. Если все еще проблема, попробуйте выполнить команду ниже, чтобы очистить старый кэш конфигурации файл.

Это сработало для меня gl ...


войдите в MYSQL-используйте базу данных mysql.

Выберите * от пользователей;

убедитесь, что столбец хоста верен. Это должен быть хост, с которого вы подключаетесь (ваш сервер приложений), будь то IP-адрес или DNS-имя. Также " % " будет работать (что означает подстановочный знак), но не будет безопасным.


проверить .env файл, если вы отредактировали любую из переменных, пожалуйста, перезапустите сервер laravel, и ваша проблема будет решена


А. После обновления .env файл с настройками базы данных, очистить настройки личинки "запуск php artisan config: clear"

B. пожалуйста, убедитесь, что вы перезагрузите сервер apache / повторите команду "php artisan serve", чтобы ваши настройки вступили в силу.


у меня была такая же проблема с использованием SQLite. Моя проблема заключалась в том, что DB_DATABASE указывала на неправильное расположение файла.

создайте файл sqlite с помощью команды touch и выведите путь к файлу с помощью php artisan tinker.

$ touch database/database.sqlite
$ php artisan tinker
Psy Shell v0.8.0 (PHP 5.6.27 — cli) by Justin Hileman
>>> database_path(‘database.sqlite’)
=> "/Users/connorleech/Projects/laravel-5-rest-api/database/database.sqlite"

затем выведите этот точный путь к переменной DB_DATABASE.

DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=/Users/connorleech/Projects/laravel-5-rest-api/database/database.sqlite
DB_USERNAME=homestead
DB_PASSWORD=secret

без правильного пути вы получите ошибку отказа в доступе


если у вас есть ошибка, возвращающая что-то вроде PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu' из-за изменений batabase config как DB_DATABASE=laravelu. Так что пока вы либо:

  1. изменить DB_DATABASE=[yourdatabase] или
  2. создайте базу данных под названием laravelu в phpmyadmin

это должно быть в состоянии решить это