Подтвердить что ты не робот

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

Я работаю на Mac OS Yosemite, используя Laravel 5.0.

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

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

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

Вот мой .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

в app/database.php

Замените localhost на 127.0.0.1

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

Также в .env

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

4b9b3361

Ответ 1

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

Ответ 2

Причиной отказа в доступе из-за ошибки hometead @localhost laravel 5 пользователя является проблема с кэшированием файла .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

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

Ответ 3

TL;DR: Вам нужно остановить сервер Ctrl + c и начать заново с помощью php artisan serve


Подробнее:

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

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

Ответ 4

Два способа решения проблемы

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

Откройте файл конфигурации базы данных (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

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

Ответ 5

если вы используете php artisan migrate НЕ из бродячего бокса, но с главной машины, то вы должны определить внутри .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

Ответ 6

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

Ответ 7

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

Ctrl + c, затем

php artisan serve

Ответ 8

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

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


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

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

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

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

Ответ 9

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


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

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

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

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

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

Ответ 10

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

php artisan config:clear. 

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

Ответ 11

в моем случае после перезапуска моего сервера проблема исчезла.

выйти/закрыть команду "php artisan serve" и

повторите команду "php artisan serve".

Ответ 12

после конфиг дб перезапустите:

 php artisan serve

Если подача активна перед настройкой db config.

Ответ 13

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

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

Ответ 14

Получил! Войдите в систему как 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

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

Ответ 15

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

Ответ 16

Все, что вам нужно сделать, это изменить файл .env.

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

Перед DB_DATABASE напишите имя базы данных, а перед DB_USERNAME используйте root.

Ответ 17

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

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

Удачи!

Ответ 18

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

Ответ 19

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

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

Ответ 20

Я найду решение

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

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

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

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

Ответ 21

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

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

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

Ответ 22

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

Ответ 23

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

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

Ответ 24

просто измените эти вещи в файле .env вашей корневой папки.

DB_DATABASE=your_db_name
DB_USERNAME=your_db_user_name
DB_PASSWORD='your_db_password'

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

Ответ 25

У меня была такая же проблема с использованием 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

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

Ответ 26

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

  • Измените DB_DATABASE= [yourdatabase] или
  • создайте базу данных под названием laravelu в вашем phpmyadmin

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

Ответ 27

В моем случае ошибка была "вызвана" моей конфигурацией Homestead/Vagrant, о которой я забыл :), пытаясь запустить миграцию только из командной строки.

В случае использования среды Homestead Vagrant Box вы должны запустить миграцию из своей машины Homestead (после подключения к ней с помощью ssh: [email protected]:22), тогда права доступа будут в порядке и позволят запустить миграцию.

Ответ 28

в моем случае (laravel 5+) мне пришлось заключить пароль в одинарные кавычки и очистить кеш конфигурации:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=database_name
DB_USERNAME=user_name
DB_PASSWORD='password'

а затем запустите:

php artisan config:clear