Я нахожусь в 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
Приложение \ 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, ]
Как избежать такой ошибки?
Я пробовал :
в приложении / 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
Попробуйте указать среду
php artisan migrate --env=local
Проверьте, работает ли 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
Это означает, что он работает.
Проверьте MySQL UNIX Socket ( этот шаг работает для меня )
Причиной отказа в доступе для пользователя «homestead» @ localhost «laravel 5» является проблема кэширования проблемы с файлом .env.php. Laravel 5 использует конфигурацию на основе среды в вашем .ENV-файле.
1 . Перейдите в корневой каталог приложения и откройте файл .env (в ubuntu он может быть скрыт, поэтому нажмите ctrl + h для отображения скрытых файлов) в вашем редакторе и измените настройку конфигурации базы данных. затем сохраните файл .env
DB_HOST=localhost DB_DATABASE=laravelu DB_USERNAME=root DB_PASSWORD=''
2 . затем перезапустите сервер Apache / веб-сервер. и обновите свою страницу, и вы сделали
3 . Если все еще проблема, попробуйте выполнить команду ниже, чтобы очистить старый файл кеша конфигурации.
php artisan config:clear
Теперь вы закончили с ошибкой
Два способа его решения
Первый способ (не рекомендуется)
Откройте файл конфигурации базы данных (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
Теперь все будет хорошо.
TLDR: вам нужно остановить сервер Ctrl + c и начать заново, используя php artisan serve
Если вы используете Laravel и запустили локальный dev-сервер уже с помощью php artisan serve
И после того, как сервер уже запущен, вы меняете свой материал сервера базы данных в файле .env. Как переход от MySQL к SQLite или что-то еще. Вам нужно убедиться, что вы остановитесь над процессом, то есть Ctrcl C
или что-нибудь, что остановит процесс. А затем перезапустите Artisan Serve, т. php artisan serve
Y php artisan serve
и обновлять ваш браузер, и ваша проблема, связанная с базой данных, будет исправлена. Это то, что сработало для меня в Laravel 5.3
если вы используете php artisan migrate
NOT из бродячего бокса, но с хост-машины, то вы должны определить внутри .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
Если вы используете веб-сервер PHP по умолчанию (например, php artisan serve
), вам необходимо перезагрузить сервер после изменения значений .env-файла.
Когда вы устанавливаете Homestead, это создает базу данных «homestead» по умолчанию в виртуальной машине. Вы должны SSH войти в VM
homestead ssh
и запустить свои миграции оттуда. Если вы работаете локально без виртуальной машины, вам необходимо создать свою базу данных вручную. По умолчанию база данных должна быть названа homestead, имя пользователя – усадьба, а пароль – секретный.
посмотрите эту тему на laracasts или эту запись в блоге для получения дополнительной информации
если вы получаете
[PDOException] SQLSTATE[HY000] [2002] No such file or directory
попробуйте изменить «хост» в файле /app/config/database.php с «localhost» на «127.0.0.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
В Windows PC Следуйте ниже.
Войдите в корневую папку вашего приложения.
Отредактируйте файл .env
Отредактируйте выделенное и измените имя пользователя и пароль adn. Имя базы данных соответственно.
У меня была такая же проблема, и в итоге оказалось, что мне просто пришлось перезапустить сервер и начать снова
Ctrl + c, тогда
php artisan serve
Когда-нибудь в будущем. Сначала попробуйте очистить конфигурацию
php artisan config:clear.
Закройте все окна терминала / cmd, а затем перезапустите терминал / CMD, и это должно избавиться от сообщения об ошибке. Посмотрите, работает ли это.
я использую laravel 5. * i 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, чтобы вы могли удалить эти конфиг vars, чтобы laravel ввел конфигурацию в / config или настроил вашу конфигурацию здесь.
Я сделал второй, и он работает для меня 🙂
Понял! Войдите в систему как 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 имеет доступ ко всем вашим таблицам и, как таковой, должен иметь возможность запускать такие вещи, как миграции.
Я просто хотел опубликовать это, потому что этот вопрос сегодня разочаровал меня около 3 часов. Я не пробовал ни один из методов, перечисленных в других ответах, хотя все они кажутся разумными. Фактически, я как раз собирался попробовать пройти каждое из предложенных выше решений, но каким-то образом я получил вдохновение. Вот то, что сработало для меня, чтобы вернуть мне работу – YMMV:
1) Найдите файл .env. 2) Переименуйте файл .env в другое. Laravel 5 должен использовать этот файл в качестве переопределения для настроек где-то еще в рамках. Я переименовал мой в .env.old. 3) Возможно, вам придется перезагрузить веб-сервер, но мне не пришлось.
Удачи!
Проверьте файл « .env » в корневой папке. это правильно?
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret
После изменения .env с новой конфигурацией вам нужно остановить сервер и запустить его снова (php artisan serve). Причина laravel получает среду, когда она инициализируется сервером. Если вы не перезапустите, вы измените вопрос .env, спрашивая себя, почему изменения не происходят!
Вы должны запустить команду $ php artisan migrate
из Homestead, а не вашего Mac.
я нашел решение
Перейдите в корневой каталог приложения и откройте файл .env (в ubuntu он может быть скрыт, поэтому нажмите ctrl + h для отображения скрытых файлов) в вашем редакторе и измените настройку конфигурации базы данных. затем сохраните файл .env
затем перезапустите сервер Apache / веб-сервер. и обновите свою страницу, и вы сделали
Это сработало для меня …
Войдите в MYSQL – используйте базу данных mysql.
Выберите * от пользователя;
Убедитесь, что ваша колонка HOST верна. Это должен быть хост, с которым вы подключаетесь (ваш сервер приложений), будь то IP-адрес или DNS-имя. Также «%» будет работать (что означает «подстановочный знак»), но не будет безопасным.
У меня была проблема с 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'
связана с тем, что вы меняете конфигурацию DB_DATABASE=laravelu
как DB_DATABASE=laravelu
. Итак, теперь вы либо:
DB_DATABASE=
[yourdatabase]
или laravelu
в вашем phpmyadmin это должно быть в состоянии решить это
Проверьте ваш .env-файл, если вы отредактировали какую-либо из переменных, любезно перезапустите сервер laravel, и ваша проблема будет решена