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

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

Хотя в моей локальной среде я запускаю php artisan migrate я продолжаю получать:

введите описание изображения здесь

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

Вот мой .env

 APP_ENV=local APP_DEBUG=true APP_KEY=***** DB_HOST=localhost DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret 

Приложение \ Config \ database.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

в приложении / database.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 при запуске

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 Socket ( этот шаг работает для меня )

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

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

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

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

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

 php artisan config:clear 

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

Два способа его решения

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

Откройте файл конфигурации базы данных (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.example, скопируйте / переименуйте его как .env после этого, файл выглядит ударом!

 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 

Теперь все будет хорошо.

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


Детали:

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

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

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

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

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

в .env файле

 DB_HOST=192.168.10.10 DB_DATABASE=homestead DB_USERNAME=homestead 

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

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

посмотрите эту тему на laracasts или эту запись в блоге для получения дополнительной информации


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

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

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

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

Проверьте 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) 

Затем я перехожу к config / database.php

Я обновляю эту строку: 'unix_socket' => '/tmp/mysql.sock',

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

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

В Windows PC Следуйте ниже.


  1. Войдите в корневую папку вашего приложения.

  2. Отредактируйте файл .env

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

Отредактируйте файл .env

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

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

Ctrl + c, тогда

 php artisan serve 

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

 php artisan config:clear. 

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

я использую laravel 5. * i figure У меня есть файл-вызов .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, чтобы вы могли удалить эти конфиг vars, чтобы laravel ввел конфигурацию в / config или настроил вашу конфигурацию здесь.

Я сделал второй, и он работает для меня 🙂

Понял! Войдите в систему как 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 имеет доступ ко всем вашим таблицам и, как таковой, должен иметь возможность запускать такие вещи, как миграции.

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

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

Удачи!

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

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

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

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

я нашел решение

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

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

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

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

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

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

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

У меня была проблема с 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' связана с тем, что вы меняете конфигурацию DB_DATABASE=laravelu как DB_DATABASE=laravelu . Итак, теперь вы либо:

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

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

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