sql >> データベース >  >> RDS >> Mysql

lavaral 5 ERROR {(SQLSTATE[HY000][1045]ユーザー'root'@'localhost'のアクセスが拒否されました(パスワードを使用:YES)}

    デフォルトでは、laravelは環境ごとに異なる構成が必要になることを前提としています。例えば。テスト環境では、別のユーザー名とパスワードを使用し、本番環境では別のユーザー名とパスワードを使用することをお勧めします。 laravelには非常に多くの構成ファイルがあるため、それらすべてを管理することはすぐに悪夢になります。したがって、laravelはPHPの環境変数を利用します。

    こちらのドキュメントをご覧ください。

    基本的に言うと、laravelがデフォルトで使用する「環境」変数を使用する場合は、すべての構成をenv()に配置する必要があります。 すでに述べた方法。

    これを望まない場合、例えば単純なプロジェクトの場合は、次のようにコードからenvを削除するだけです。

    'mysql' => [
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'laravel',
            'username'  => 'root',
            'password'  => 'password',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],
    

    組み合わせることができることに注意してください。つまり、env内のいくつかの変数と、いくつかのスタンドアロンを持つことができます。

    では、なぜenvを使用するのですか? まったく?

    アプリケーションに100個のテスターがすべて異なる場所に配置されているとします。 Laravelでは、約8〜10個の構成ファイルをコーディングする必要があります。また、version-controlする必要があります それらのファイル。したがって、手元に2つの問題があります。

    1. 100人のユーザー全員に同じ資格情報を送信したくない。また、異なるデータベースやキャッシュサーバーなどを使用する場合もあります。つまり、異なる構成になります。したがって、すべてのユーザーはこれらの8〜10個の構成ファイルを手動で管理する必要があります。
    2. これらの構成ファイルをバージョン管理に送信したくない場合。そうすれば、全世界があなたのAPIシークレットを知っており、おそらくそれを利用するでしょう(パスワードのように)。また、laravel confファイルを見ると、タイムゾーンやデバッグプロパティなど、confファイルにも含まれている他の情報があり、それらをバージョン管理する必要があることに気付くでしょう。では、このような構成ファイルをバージョン管理し、機密情報を非表示にするにはどうすればよいでしょうか。

    答えはenvです 変数。 Laravelはdotenvを使用します そのドキュメントはここにあります 。基本的に、これらは.envと呼ばれる1つのファイルに存在する変数です。 キーと値のペアで。例:

    .envファイルのサンプルコンテンツ

    APP_DEBUG=false
    APP_KEY=ABCDEFGH
    ...
    

    .envファイルをこのように定義すると、env('APP_DEBUG')などのキーを使用して値を取得できます。 。

    したがって、これは上記の問題を次の方法で解決します。

    1. .envを保持します 自分にファイルします。また、.env.exampleという別のファイルを宣言します これは、機密値ではなくサンプル値が含まれているという事実を除いて、元のファイルの正確なレプリカです。次に、この新しいサンプルファイルを全員に渡します。サンプルデータを独自の機密情報に置き換えます。
    2. サンプルファイルをバージョン管理しているので、シークレットが含まれていないため、すべてのconfファイルをバージョン管理できます。その秘密は.envファイルにあります。これらのconfファイルに含まれるのは、これらのenv('APP_KEY')のような値です。 実際の値は、実行時に.envファイルを使用して置き換えられます。


    1. Mysql-一意のインデックスを使用して結合された列の重複エントリを防止します

    2. MariaDBでのSHOWCOLLATIONの仕組み

    3. MySQLのJSON_MERGE_PATCH()とJSON_MERGE_PRESERVE():違いは何ですか?

    4. 12cのSQL​​Tは統計を収集できません