Laravel 5.0을 사용하는 Mac OS Yosemite를 사용하고 있습니다.
내 지역 환경에서 php artisan migrate
나는 계속해서 뛰고 있다.
사용자 ‘homestead’@ ‘localhost’에 대한 액세스가 거부되었습니다 (암호 사용 : YES)
구성
여기 내 .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
삼
실행으로 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 소켓 확인 ( 이 단계는 저에게 효과적입니다 )
답변
사용자 ‘homestead’@ ‘localhost’laravel 5 오류로 인해 액세스가 거부 된 이유는 .env.php 파일의 캐싱 문제 로 인해 Laravel 5가 .env 파일에서 환경 기반 구성을 사용하고 있기 때문입니다.
1 . 편집기에서 응용 프로그램 루트 디렉토리로 이동하여 .env 파일 (우분투에서는 숨겨져있을 수 있으므로 숨겨진 파일을 표시하려면 ctrl+ h를 누르고 터미널에있는 경우 : ls -a
숨겨진 파일을 표시하려면 : 을 입력하십시오) 을 열고 데이터베이스 구성 설정을 변경하십시오. 그런 다음 .env 파일을 저장하십시오.
DB_HOST=localhost
DB_DATABASE=laravelu
DB_USERNAME=root
DB_PASSWORD=''
2 . 그런 다음 아파치 서버 / 웹 서버를 다시 시작하십시오. 페이지를 새로 고침하면
3 . 여전히 문제가 발생하면 아래 명령을 실행하여 이전 구성 캐시 파일을 지우십시오.
php artisan config:clear
이제 오류가 끝났습니다.
답변
TLDR은 : 당신은 서버를 중지해야 Ctrl+ c및 사용하여 다시 시작php artisan serve
세부:
Laravel을 사용하고 있고 이미 로컬 개발자 서버를 시작한 경우 php artisan serve
그리고 위의 서버가 이미 실행 된 후 .env 파일에서 데이터베이스 서버 관련 항목을 변경합니다. MySQL에서 SQLite 또는 다른 것으로 옮기는 것과 같습니다. 위의 프로세스 즉 프로세스 Ctrcl C
를 중지시키는 요소를 중지해야합니다. 그런 다음 Artisan Serve를 다시 시작하십시오. 즉, 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 권장)
파일 호출이 .env 인 Laravel 루트를 확인하십시오. 존재하지 않는 경우 .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
이제 잘 작동합니다.
답변
당신이 사용하는 경우 php artisan migrate
방랑 상자에서하지만 호스트 컴퓨터에서 NOT 다음은 내부에 정의해야합니다 .env
상자의 IP192.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를 설치하면 VM에 기본 “homestead”데이터베이스가 작성됩니다. VM에 SSH로 연결 한 후
homestead ssh
마이그레이션을 실행해야합니다. VM없이 로컬에서 작업하는 경우 데이터베이스를 수동으로 만들어야합니다. 기본적으로 데이터베이스는 homestead라고하고 사용자 이름은 homestead이고 암호는 비밀입니다.
자세한 내용 은 laracasts 또는이 블로그 게시물 에서이 스레드를 확인 하십시오.
당신이 받고 있다면
[PDOException] SQLSTATE[HY000] [2002] No such file or directory
/app/config/database.php 파일의 “host”를 “localhost”에서 “127.0.0.1”로 변경하십시오. 이 스레드 에서 자세한 내용 및 기타 수정 사항을 찾을 수 있습니다 .
또한 올바른 지정 여부를 확인하십시오 unix_socket
. 이 스레드를 확인하십시오 .
답변
MySQL UNIX 소켓 확인
MySQL을 사용하여 unix_socket 위치 찾기
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',
그게 다야. 그것은 나의 4 번째 시도로서 저에게 효과적입니다.이 단계들이 누군가를 돕기를 바랍니다. :디