Доступ запрещен для пользователя '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 125

23 ответа:

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

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

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 file. Например, переход от 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 если не существует, ищите .ОКР.например, скопируйте / переименуйте его как .ОКР после что файл выглядит ударом !

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 file

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". вы можете найти более подробную информацию и другие исправления здесь на этом thread.

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

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

Ctrl + c затем

php artisan serve

в Windows PC выполните следующие действия.


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

  2. редактировать .env file

Access Root folder of your application

Edit the .env File

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

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

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

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

Я должен найти решение

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

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

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

Это сработало для меня 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. Так что сейчас вы тоже:

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

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