Доступ заборонено користувачеві 'farmtead' @ 'localhost' (використовуючи пароль: ТАК)


165

Я на Mac OS Yosemite за допомогою Laravel 5.0.

Перебуваючи в моєму місцевому середовищі, я бігаю, php artisan migrateя все отримую:

Доступ заборонено користувачеві 'farmtead' @ 'localhost' (використовуючи пароль: ТАК)

Конфігурація

Ось мій .env

APP_ENV=local
APP_DEBUG=true
APP_KEY=*****

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

app \ 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 ( Цей крок працює для мене )


1
Найкращою практикою було б переконатися, що акаунт насправді існує в mysql ... "Я знайшов цей ключ на вулиці, і він не працює в моєму замці вхідних дверей. Як я можу змінити замок, щоб ключ працював?"
Марк Б

1
Я вважаю, ти використовуєш господарство VM? Я виявив, що це працюватиме лише тоді, коли ти знаходишся у ВМ. Ви можете потрапити на нього за допомогою ssh vagrant@127.0.0.1 -p 2222. Моя машина за замовчуванням не перекручується, що вказаний db працює.
Джей Едвардс

Відповіді:


254

Причиною доступу до домену відмовлено в помилці користувача '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

Тепер ви закінчили з помилкою


1
Я працював для мене спасибі, одне питання, чому нам потрібно встановити наші дані про db на .env-файл, як це робимо у файлі database.php
Dipen

1
можливо, мені потрібно кілька середовищ, виробничих та місцевих.
Абду Тахірі

5
Я намагався перезапустити Apache, коли я весь час використовував "php artisan serve", я б запропонував вам не робити ту саму помилку, як я> <
Carlton

1
Не працює, і тепер я PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu'дістаю ._.
Чорний

1
Я спробував змінити .envта config:clear cache:clearвсі команди, перезапустив, apacheале все-таки отримав ту ж проблему.
Лузан Барал

67

TLDR: Вам потрібно зупинити сервер Ctrl+ cта почати знову використовуватиphp artisan serve


Деталі:

Якщо ви використовуєте Laravel і вже запустили локальний сервер розробників php artisan serve

І після того, як вище запущений сервер, ви змінюєте пов'язані з сервером бази даних речі у файлі .env. Як, наприклад, перехід від MySQL до SQLite або щось подібне. Вам потрібно переконатися, що ви зупинитесь над процесом, тобто Ctrcl Cчи на чомусь, що зупинить процес. А потім перезапустіть Artisan Serve знову, тобто у php artisan serveта оновіть веб-переглядач, і проблема, пов’язана з базою даних, буде виправлена. Це те, що працювало для мене для Laravel 5.3


о мій боже, це працювало для мене завдяки. але як я можу зупинитись, коли env змінився, чи є інструменти? це хороший досвід
saber tabatabaee yazdi

31

Два способи її вирішити

Перший спосіб (не рекомендується)

Відкрийте конфігураційний файл вашої бази даних (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

Зараз це буде добре працювати.


1
У чому сенс цього файлу? Ця інформація root/config/database.phpздається зайвою.
Халтер

Інформаційна доза не є зайвою, вона використовує функцію env для зчитування значення з файлу .env для захисту інформації сервера.
absiddiqueLive

Як знайти або створити ім'я хоста, ім'я бази даних, ім'я користувача та пароль за допомогою Homestead?
Connor Leech

21

якщо ви використовуєте 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

Я не міг змусити це працювати, але grant all privileges on *.* to 'homestead'@'localhost' identified by 'secret';працював на мене.
Райан

21

Якщо ви використовуєте веб-сервер PHP за замовчуванням (наприклад php artisan serve), вам потрібно перезапустити сервер після зміни значень файлу .env.


11

Коли ви встановлюєте Homestead, це створює базу даних "farmtead" за замовчуванням у віртуальній машині. Ви повинні SSH у ВМ homestead sshі запустити міграцію звідти. Якщо ви працюєте локально без VM, вам потрібно буде створити свою базу даних вручну. За замовчуванням базу даних слід називати "садиба", ім'я користувача - "садиба", а пароль - секрет.

перегляньте цю тему на laracasts або в цій публікації блогу, щоб отримати докладнішу інформацію


якщо ви отримуєте

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

спробуйте змінити "хост" у файлі /app/config/database.php з "localhost" на "127.0.0.1". Ви можете знайти більше деталей та інших виправлень тут у цій темі .

Також перевірте, чи вказали ви правильно unix_socket. перевірити цю нитку .


@ rangerover.js спробуйте змінити "хост" у файлі /app/config/database.php з "localhost" на "127.0.0.1"
Sojan V Jose

@ Rangerover.js перевірити цю тему stackoverflow.com/questions/20723803 / ... . дивіться будь-яке питання, що має значення.
Sojan V Jose

@ rangerover.js також перевіряє, чи працює служба mysql :)
Sojan V Jose

@ rangerover.js може перевірити ваш unix_socket? stackoverflow.com/a/25649930/939299
Sojan V Хосе

1
Це нарешті працює на 4-му спробував. Видаліть усі ваші коментарі та включіть це посилання stackoverflow.com/a/25649930/939299 як частину вашої відповіді, оскільки це мені допомагає.
cyber8200

11

Перевірте 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',

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

Це воно. Це працює для мене як моя четверта спроба. Сподіваюся, ці кроки комусь допоможуть. : D


Ого, що мене врятувало
Петро Василев

11

У мене була така ж проблема, і врешті-решт виявилося, що мені просто довелося перезапустити сервер і запустити заново

Ctrl+ cтоді

php artisan serve

9

У Windows PC Дотримуйтесь нижче.


  1. Отримайте доступ до папки Root програми.

  2. Відредагуйте .env-файл

Відкрийте папку Root програми

Відредагуйте .env файл

Відредагуйте виділене та змініть ім’я користувача та пароль відповідно до імені бази даних відповідно.


9

в моєму випадку після перезавантаження мого сервера проблеми не було.

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

повторно запустіть команду "php artisan serve" .


8

Десь у майбутньому. Спробуйте спочатку очистити конфігурацію

php artisan config:clear. 

Закрийте всі вікна терміналу / cmd, а потім перезапустіть термінал / CMD, і це повинно позбутися повідомлення про помилку. Подивіться, чи працює.


спасибі багато, це працює для мене. я не знаю, чому ця помилка сталася. я просто закриваю все та перезавантажую і запускаю php artisan config: clear
sabre tabatabaee yazdi

6

після config db перезапустіть:

 php artisan serve

Якщо сервіс активний перед встановленням конфігурації db.


5

я використовую 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 або налаштував тут свою конфігурацію.

Я зробив друге, і це працює для мене :)


5

Зрозумів! Увійдіть як корінь та надайте farmtead @ 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

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


5

Після зміни .env з новою конфігурацією вам доведеться зупинити сервер і запустити його знову (php artisan serve). Тому що laravel отримує середовище при його ініціалізації на сервері. Якщо ви не перезапустите, ви зміните .env, запитуючи себе, чому зміни не відбуваються !!


5

Все, що вам потрібно зробити - це змінити .env- файл.

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

Перед DB_DATABASE введіть ім'я бази даних і перед DB_USERNAME використовуйте root .


4

Я просто хотів опублікувати це, тому що сьогодні ця проблема засмутила мене близько 3 годин. Я не пробував жодного із методів, перелічених в інших відповідях, хоча всі вони здаються розумними. Насправді я збирався спробувати переглядати кожне із запропонованих вище рішень, але я якось отримав цей натхнення. Ось що для мене спрацювало, щоб повернути мене до роботи - YMMV:

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

Удачі!


3

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


На екрані екрана відображається назва машини як MBP-bheng-aveniors. Це не ваша ВМ. Вам потрібно SSH в Homestead ( $ homestead ssh), а потім запустити $ php artisan migrateз цього сеансу SSH.
Мартін Бін

3

Перевірте свій файл " .env " у кореневій папці. це правильно?

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

3

у мене є рішення

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

  2. потім перезапустіть ваш сервер apache / веб-сервер. і оновіть свою сторінку, і ви це зробили

  3. Якщо проблему все-таки вирішити, спробуйте виконати команду нижче, щоб очистити старий файл кешу конфігурації.

Це працювало для мене gl ...


3

просто змініть ці речі у .env-файлі вашої кореневої папки.

DB_DATABASE=your_db_name
DB_USERNAME=your_db_user_name
DB_PASSWORD='your_db_password'

Це працювало для мене.


3

у моєму випадку (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

1

Увійдіть у MYSQL - використовуйте базу даних mysql.

Виберіть * від користувача;

Переконайтеся, що ваш стовпець HOST правильний. Це повинен бути хост, з якого ви підключаєтесь (ваш сервер додатків) - це IP-адреса або ім'я DNS. Також "%" буде працювати (маючи на увазі підстановку), але не буде захищеною.


1

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


1

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

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


0

У мене була така ж проблема із використанням SQLite. Моя проблема полягала в тому, що DB_DATABASE вказував на неправильне розташування файлу.

Створіть файл sqlite за допомогою сенсорної команди та виведіть шлях до файлу за допомогою 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

Без правильного шляху ви отримаєте помилку в доступі, відхилену


0

Якщо у вас є помилка повернення чогось подібного PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu'через те, що ви змінюєте конфігурацію batabase як DB_DATABASE=laravelu. Тож поки що ви:

  1. Змінити DB_DATABASE=[yourdatabase] або
  2. створити базу даних, що називається laraveluу вашому phpmyadmin

це має бути в змозі вирішити


0

У моєму випадку помилка була "викликана" моєю конфігурацією Homestead / Vagrant, про яку я забув :), намагаючись запустити міграцію просто з командного рядка.

У разі використання середовища Homestead Vagrant Box ви повинні запустити міграцію зсередини своєї машини Homestead (після підключення до неї за допомогою ssh:), vagrant@192.168.10.10:22тоді права доступу будуть нормальними і дозволять запускати міграцію.


0

З вашого питання, здається, ви керуєте садибою. У такому випадку переконайтеся, що ви виконуєте команди у своєму VM. Багато розробників, включаючи мене, часто роблять помилки і запускають ремісничі команди поза VM, які команди намагаються підключитися до нашої локальної бази даних, доступної через localhost, яка відрізняється від бази даних, що використовується у господарстві. Перейдіть до каталогу Homestead і запустіть

vagrant ssh

тоді CD в код, якщо саме там ви зберігаєте свої проекти та CD у свій проект і запускаєте, php artisan migrate again я сподіваюся, що це допоможе іншим людям.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.