[php] 사용자 ‘homestead’@ ‘localhost’에 대한 액세스가 거부되었습니다 (암호 사용 : YES)

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

교체 localhost127.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 번째 시도로서 저에게 효과적입니다.이 단계들이 누군가를 돕기를 바랍니다. :디