Я нахожусь в 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
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,
]
Как избежать такой ошибки?
Я пробовал:
в приложении /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 (этот шаг работает для меня)
Найдите расположение 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
Причиной ошибки доступа, запрещенной для пользователя 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
Теперь он будет работать нормально.
root/config/database.php
кажется избыточной.
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
если вы используете 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';
работал на меня.
Если вы используете веб-сервер PHP по умолчанию (например, php artisan serve
), вам необходимо перезагрузить сервер после изменения ваших значений .env.
Когда вы устанавливаете 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
. проверьте этот поток.
В Windows PC Следуйте ниже.
Доступ к корневой папке вашего приложения.
Отредактируйте файл .env
Отредактируйте выделенное и измените имя пользователя и пароль adn. Имя базы данных соответственно.
У меня была такая же проблема, и в итоге оказалось, что мне просто пришлось перезапустить сервер и начать снова
Ctrl + c, затем
php artisan serve
Когда-нибудь в будущем. Попробуйте сначала очистить конфигурацию
php artisan config:clear.
Закройте все окна терминала /cmd, а затем перезапустите терминал /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
Теперь обычный пользователь имеет доступ ко всем вашим таблицам и, как таковой, должен иметь возможность запускать такие вещи, как миграции.
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 или настраивал здесь свою конфигурацию.
Я сделал второй, и он работает для меня:)
После изменения .env с новой конфигурацией вам нужно остановить сервер и запустить его снова (php artisan serve). Причина laravel получает среду, когда она инициализировала сервер. Если вы не перезапустите, вы измените вопрос .env, спрашивая себя, почему изменения не происходят!
Проверьте файл .env в корневой папке. это правильно?
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Я просто хотел опубликовать это, потому что этот вопрос сегодня разочаровал меня около 3 часов. Я не пробовал ни один из методов, перечисленных в других ответах, хотя все они кажутся разумными. Фактически, я как раз собирался попробовать пройти каждое из предложенных выше решений, но каким-то образом я получил вдохновение. Вот как я работал, чтобы вернуть мне работу - YMMV:
1) Найдите файл .env. 2) Переименуйте файл .env в другое. Laravel 5 должен использовать этот файл в качестве переопределения для настроек где-то еще в рамках. Я переименовал мой в .env.old 3) Возможно, вам потребуется перезапустить веб-сервер, но мне не нужно было.
Удачи!
Я найду решение
Перейдите в корневой каталог вашего приложения и откройте файл .env(в ubuntu может быть скрыто, а затем нажмите ctrl + h для отображения скрытых файлов) в вашем редакторе и измените настройку конфигурации базы данных. затем сохраните файл .env
затем перезагрузите сервер Apache/веб-сервер. и обновите свою страницу, и вы сделали
Это сработало для меня...
Вам нужно запустить команду $ php artisan migrate
из Homestead, а не с вашего Mac.
MBP-bheng-aveniors
. Это не ваша ВМ. Вам нужно SSH в Homestead ( $ homestead ssh
) и затем запустить $ php artisan migrate
из этого сеанса SSH.
Войдите в MYSQL - используйте базу данных mysql.
Выберите * от пользователя;
Убедитесь, что ваша колонка HOST верна. Это должен быть хост, с которым вы подключаетесь (ваш сервер приложений), будь то IP-адрес или DNS-имя. Также "%" будет работать (что означает "подстановочный знак" ), но не будет безопасным.
Проверьте ваш .env файл, если вы отредактировали любую из переменных, любезно перезапустите сервер laravel, и ваша проблема будет решена.
Если у вас есть ошибка, возвращающая что-то вроде PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu'
из-за того, что вы меняете конфигурацию базы данных как DB_DATABASE=laravelu
. Итак, теперь вы либо:
DB_DATABASE=
[yourdatabase]
илиlaravelu
в вашем phpmyadminэто должно быть в состоянии решить его
У меня была такая же проблема с использованием 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
Без правильного пути вы получите ошибку отказа в доступе