web-dev-qa-db-ja.com

ユーザー 'Homestead' @ 'localhost'のアクセスが拒否されました(パスワードを使用:YES)

私はLaravel 5.0を使ってMac OS Yosemiteを使っています。

私の local 環境にいる間、私はphp artisan migrateを実行し続けます:

enter image description here

設定

ここに私の .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

app/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


3

MySQLがrunで実行されているかどうかを確認します

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を確認してください( このステップは私にとってはうまくいきます

140
kyo

MySQL UNIXソケットを確認してください

MySQLを使用して unix_socket locationを検索します。

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回目の試みとして私のために働きます。 :D

8
kyo

ユーザー 'Homestead' @ 'localhost' laravel 5のエラーでアクセスが拒否された理由は、.env.phpファイルのcaching-issueです。原因Laravel 5は、あなたの.envファイル。

1。アプリケーションのルートディレクトリに移動し、.envファイルを開きます(ubuntuでは非表示になっている場合があります ctrl+h 隠しファイルを表示するには、端末にいる場合は、エディタに「ls -a」と入力して隠しファイルを表示し、データベース構成設定を変更します。それから.envファイルを保存してください

DB_Host=localhost
DB_DATABASE=laravelu
DB_USERNAME=root
DB_PASSWORD=''

2。その後、Apacheサーバー/ Webサーバーを再起動してください。そしてあなたのページを更新すればこれで終わりです

。それでも問題が解決しない場合は、以下のコマンドを実行して古い設定キャッシュファイルを消去してください。

php artisan config:clear

これでエラーは終了です

232
Abdou Tahiri

TLDR:サーバーを停止する必要があります Ctrl + c php artisan serveを使ってもう一度始めてください。


詳細:

Laravelを使用していて、すでにphp artisan serveによってローカル開発サーバーを起動している場合

そして、上記のサーバーが既に稼働していた後、あなたは.envファイルのデータベースサーバー関連のものを変更します。 MySQLからSQLiteか何かへの移行のように。 Ctrcl Cやプロセスを停止させるものなど、上記のプロセスを必ず停止させる必要があります。それからArtisan Serveを再起動します。つまり、y php artisan serveとブラウザを更新すると、データベースに関する問題は解決されます。これはLaravel 5.3のために私のために働いたものです

60
Mohsin

それを解決する2つの方法

最初の方法(非推奨)

データベースの設定ファイル(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

今ではうまくいきます。

30
absiddiqueLive

PHPのデフォルトWebサーバー(例:php artisan serve)を使用している場合は、.envファイルの値を変更した後にサーバーを再起動する必要があります。

21
Vrushal Raut

あなたがvagrant boxではなくHost machineから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
18
wdog

私は同じ問題を抱えていたし、結局それは私がただサーバーを再起動してそして再び始めなければならなかったことがわかった

Ctrl + c それから

php artisan serve
10

Homesteadをインストールすると、VMにデフォルトの「Homestead」データベースが作成されます。 VM Homestead sshにSSHでアクセスし、そこから移行を実行してください。 VMなしでローカルに作業している場合は、データベースを手動で作成する必要があります。デフォルトでは、データベースはHomesteadと呼ばれ、ユーザー名はHomestead、パスワードはsecretです。

this laracastsのスレッドをチェックしてください またはthis ブログ投稿 詳細については


あなたがなっている場合

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

/app/config/database.phpファイルの "Host"を "localhost"から "127.0.0.1"に変更してみてください。この thread に、あなたはより多くの詳細と他の修正をここで見つけることができます。

また、正しいunix_socketを指定したかどうかも確認してください。これをチェックしてください thread

10
Sojan V Jose

Windows PCの場合以下に従ってください。


  1. アプリケーションのルートフォルダにアクセスします。

  2. .envファイルを編集します

Access Root folder of your application

Edit the .env File

強調表示を編集し、UserNameとパスワードadn The database Nameを適宜変更します。

9
Fred Ondieki

将来的には。最初に設定をクリアしてみてください

php artisan config:clear. 

すべてのterminal/cmdウィンドウを閉じてからterminal/CMDを再起動するとエラーメッセージが消えます。それが機能するかどうかを確認してください。

7
Krishneil

私の場合、 再起動後に myサーバーに問題がなくなりました。

"php artisan serve"コマンドを終了/閉じる および

コマンド "php artisan serve"を再実行してください

6
sh6210

新しい設定で.envを変更したら、サーバーを停止して再度実行する必要があります(php artisan serve)。原因laravelはサーバーの初期化時に環境を取得します。再起動しないと、.envを変更して、変更が行われていない理由を確認します。

5
Luis Lopez

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設定を上書きしていたので、あなたはそれらの設定変数を削除して/ configの下の設定を取るか、ここで設定をセットアップすることができます。

私は2番目にしました、そして、それは私のために働きます:)

5
Jesus Gonzalez

とった! 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

今すぐhomeesteadsの通常のユーザーはあなたのすべてのテーブルにアクセスすることができます、そしてそのように、移行のようなことを実行することができるはずです。

5
Mike Wright

.env ファイルを変更するだけです。

DB_Host=localhost
DB_DATABASE=Homestead
DB_USERNAME=Homestead
DB_PASSWORD=secret

DB_DATABASEの前にデータベースの名前を書き、DB_USERNAMEの前に root を使用します。

4
Apoorv

設定データベースが再起動した後:

 php artisan serve

サーブがアクティブになっている場合は、db configを設定してください。

4
A1Gard

解決策が見つかりました

  1. アプリケーションのルートディレクトリに移動し、エディタで.envファイル(ubuntuでは非表示になっている可能性があるので、ctrl + hを押して非表示のファイルを表示)を開き、データベース設定を変更します。それから.envファイルを保存してください

  2. その後、Apacheサーバー/ Webサーバーを再起動してください。そしてあなたのページを更新すればこれで終わりです

  3. それでも問題が解決しない場合は、以下のコマンドを実行して古い設定キャッシュファイルを消去してください。

これは私のために働いたgl ...

3
DucaBgd

ルートフォルダの " .env "ファイルを確認してください。それが正しいか?

DB_CONNECTION=mysql
DB_Host=127.0.0.1
DB_PORT=3306
DB_DATABASE=Homestead
DB_USERNAME=Homestead
DB_PASSWORD=secret
3
Ferhat KOÇER

この問題が今日の約3時間の間私をいらいらさせたので、私はちょうどこれを投稿したいと思いました。私は他の答えに記載されている方法のどれも試していません、それらはすべて合理的に思えますが。実際、私はちょうど上で提案された解決策のそれぞれを通過しようとしていましたが、どういうわけか私はこのインスピレーションのストロークを得ました。ここに私が仕事に取り戻すために私のために働いたものがあります - YMMV:

1)あなたの.envファイルを見つけてください。 2).envファイルの名前を他の名前に変更します。 Laravel 5は、このファイルをフレームワーク内の他の場所の設定のオーバーライドとして使用している必要があります。私の名前を.env.oldに変更しました。3)Webサーバーを再起動する必要があるかもしれませんが、する必要はありませんでした。

がんばろう!

あなたのMacではなく、Homestead内から$ php artisan migrateコマンドを実行しなければなりません。

3
Martin Bean

MYSQLにログインします - mysqlデータベースを使用します。

ユーザーから*を選択します。

[ホスト]列が正しいことを確認してください。 IPアドレスまたはDNS名であれば、接続元のホスト(アプリケーションサーバー)である必要があります。また、 '%'は機能しますが(ワイルドカードを意味します)、安全ではありません。

1
beiller

.envファイルを確認し、変数を編集したら、laravelサーバーを再起動してください。問題が解決します。

1
Ogbonna Vitalis

ルートフォルダーの.envファイルでこれらを変更するだけです。

DB_DATABASE=your_db_name
DB_USERNAME=your_db_user_name
DB_PASSWORD='your_db_password'

それは私のために働いた。

1
sradha

A.データベース設定で.envファイルを更新した後、「running php artisan config:clear」で幼虫の設定を消去します。

B.設定を有効にするために、必ずApacheサーバーを再起動するか、 "php artisan serve"コマンドを再実行してください。

1
SoftwarerHelp

私はSQLiteを使用して同じ問題を抱えていた。私の問題は、DB_DATABASEが間違ったファイルの場所を指していたことです。

Touchコマンドで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
Connor Leech

PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu'のようなものを返すエラーがある場合は、ベース構成をDB_DATABASE=laraveluに変更していることが原因です。だから今のところあなたはどちらか:

  1. DB_DATABASE=[yourdatabase] または を変更します。
  2. phpmyadminにlaraveluというデータベースを作成します。

これで解決できるはずです

0
Byron Wong

私の場合、エラーはコマンドラインから移行を実行しようとしていたホームステッド/ヴァグラントの構成が原因でした。

Homestead Vagrant Box環境を使用する場合は、ssh:[email protected]:22を使用して接続した後、Homesteadマシン内から移行を実行する必要があります。アクセス権はOKで、移行を実行できます。

0
Picard