Доступ запрещен для пользователя 'homestead' @ 'localhost' (используя пароль: да)
я на 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
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 следуйте ниже.
доступ к корневой папке приложения.
редактировать .файл env
отредактируйте выделенное и измените имя пользователя и пароль 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.
У меня есть решение
перейдите в корневой каталог приложения и открытые .env-файл (в ubuntu он может быть скрыт, поэтому нажмите ctrl+h, чтобы показать скрытые файлы) в редакторе и измените настройку конфигурации базы данных. тогда спаси свою .файл env
затем перезапустите сервер apache / веб-сервер. и обновите свою страницу, и вы сделали
- Если все еще проблема, попробуйте выполнить команду ниже, чтобы очистить старый кэш конфигурации файл.
Это сработало для меня 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
. Так что пока вы либо:
- изменить
DB_DATABASE=
[yourdatabase]
или - создайте базу данных под названием
laravelu
в phpmyadmin
это должно быть в состоянии решить это