Доступ запрещен для пользователя '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 ошибка кэширование-вопрос часть .ОКР.php file cause Laravel 5 использует конфигурацию на основе среды в вашем .env file.
1. Перейдите в корневой каталог приложения и откройте его .env-файл (в ubuntu может быть он скрыт, поэтому нажмите ctrl+h чтобы показать скрытые файлы & если вы находитесь в терминале, то введите:
ls -a
Показывать скрытые файлы) в вашем редакторе и изменить настройки конфигурации базы данных. тогда спаси свою .env fileDB_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 file. Например, переход от MySQL к SQLite или что-то в этом роде. Вам нужно убедиться, что вы остановитесь выше процесса т. е.
Ctrcl C
или все, что останавливает процесс. А затем перезапустить ремесленник служить снова т. е. yphp 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 если не существует, ищите .ОКР.например, скопируйте / переименуйте его как .ОКР после что файл выглядит ударом !
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
не из бродячей коробки, а из главной машины, то вы должны определить внутри.env
ip коробки192.168.10.10
и, очевидно, установить разрешение на пользователя усадьбы с вашего ip что-то вроде
grant all privileges on *.* to 'homestead'@% identified by 'secret';
на
.env
fileDB_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". вы можете найти более подробную информацию и другие исправления здесь на этом thread.
также проверьте, правильно ли вы указали
unix_socket
. проверьте это thread .
У меня была та же проблема, и в конце концов оказалось, что мне просто нужно было перезагрузить сервер и начать снова
Ctrl + c затем
php artisan serve
Проверьте MySQL UNIX сокет
найти 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',
to:
'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, так что вы можете wheather удалил те config vars так laravel взять конфигурацию под /config или настроить конфигурацию здесь.
Я сделал второй и это работает для меня :)
Я просто хотел опубликовать это, потому что эта проблема расстроила меня около 3 часов сегодня. Я не пробовал любой из методов, перечисленных в других ответах, хотя все они кажутся обоснованными. На самом деле, я как раз собирался попробовать пройти через каждое из предложенных выше решений, но каким-то образом я получил этот удар вдохновения. Вот что сработало для меня, чтобы заставить меня снова работать - YMMV:
1) Найти свой .env file. 2) переименовать .файл env на что-то другое. Laravel 5 должен использовать это файл переопределения параметров где-то еще в рамках. Я переименовал свой в .ОКР.старый 3) Возможно, вам потребуется перезагрузить веб-сервер, но мне это не нужно.
удачи!
Проверьте ".env файл" в корневой папке. это правильно?
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret
после перезапуска БД конфигурации:
php artisan serve
если подача активна перед установкой конфигурации БД.
Я должен найти решение
перейдите в корневой каталог приложения и открытые .env-файл (в ubuntu может быть скрыт, поэтому нажмите ctrl+h, чтобы показать скрытые файлы) в редакторе и измените настройку конфигурации базы данных. тогда спаси свою .env file
затем перезапустите сервер apache / веб-сервер. и обновить страницу, и вы сделали
- Если все еще проблема, попробуйте выполнить команду ниже, чтобы очистить старый кэш конфигурации файл.
Это сработало для меня gl ...
войдите в MYSQL-используйте базу данных mysql.
Выберите * от пользователей;
убедитесь, что ваш столбец хоста является правильным. Это должен быть хост, с которого вы подключаетесь (ваш сервер приложений), будь то IP-адрес или DNS-имя. Также " % " будет работать (что означает подстановочный знак), но не будет безопасным.
проверить .env file, если вы редактировали какую-либо из переменных, пожалуйста, перезапустите laravel server, и ваша проблема будет решена
А. После обновления .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 какDB_DATABASE=laravelu
. Так что сейчас вы тоже:
- изменить
DB_DATABASE=
[yourdatabase]
или- создать базу данных с именем
laravelu
в phpmyadminэто должно быть в состоянии решить это