今回は、MySQL データベースのアクセス拒否に対処する方法と、MySQL データベースのアクセス拒否に対処する際の注意点について説明します。以下は実際のケースですので、見てみましょう。
ブログの構築にはwordpressを使用し、データベースにはMySQLを使用します。デバッグの便宜のために、アカウント my_account を作成し、任意のホストからデータベースにアクセスできるようにします。
CREATE USER `my_account`@'%' IDENTIFIED BY 'my_password';Copy
wp-config.php の対応する設定を変更します。DB_HOST が 127.0.0.1 に設定されていることに注意してください。
define('DB_USER', 'my_account'); // 账号 define('DB_PASSWORD', 'my_password'); // 密码 define('DB_HOST', '127.0.0.1'); // 数据服务地址Copy
クラウドサーバーにデプロイされ、ローカルブラウザがブログにアクセスし、データベースアクセスが拒否されたことを示すプロンプトが表示されます(リモートデータへのローカル接続は問題ありません)。以下はエラーログです。
エラー 1045 (28000): ユーザー 'my_account'@'localhost' のアクセスが拒否されました (パスワードを使用: YES)`Copy
簡単なトラブルシューティングの後、問題は解決されました。解決策とエラーの原因がここに記録されます。 。
解決策
1. 解決策 1: mysql.user テーブルの Host フィールドが localhost である匿名アカウントを削除します (アカウント名は空です)。
2. 解決策 2: データベースへのローカル接続用の my_account@localhost アカウントを作成します。
著者は計画 1 を採用しました。
まず、mysql.userテーブルに匿名アカウントがあるかどうかを確認します。
MariaDB [(none)]> SELECT User, Host from mysql.user WHERE Host = 'localhost' AND User = ''; +------+-----------+ | User | Host | +------+-----------+ | | localhost | +------+-----------+ 1 row in set (0.00 sec)Copy
その後、該当する匿名アカウントを削除し、再度ログインしてみると成功します。
MariaDB [(none)]> DROP USER ''@'localhost'; Query OK, 0 rows affected (0.00 sec)Copy
問題分析
匿名アカウントがデータベース接続エラーを引き起こすのはなぜですか?
MySQL アカウントの作成とクライアント接続の検証について一定の理解が必要です。
MySQL アカウントを作成します
基本的な構文は次のとおりです:
CREATE USER Account name@Host IDENTIFIED BY Password;Copy
注: (ユーザーは以下のアカウント名を参照するために使用され、ホストはホストを参照します) )
ホストは、データベースにアクセスするホストから許可されたアカウントを示します。主にセキュリティ制限に使用され、ホスト名、IP アドレス、% (ワイルドカード) を使用できます。ホストが異なる限り、ユーザーを繰り返すことができます。
ホストが % に設定されている場合、データベースはどのホストからでも接続できることを意味します。
たとえば、xiaoming アカウントが 2 つあり、1 つはローカル マシンからデータベースへの接続を許可し、もう 1 つは 14.215.177.39 からデータベースへの接続を許可します。
MariaDB [(none)]> SELECT User, Host FROM mysql.user WHERE User = 'xiaoming'; +---------+---------------+ | User | Host | +---------+---------------+ | xiaoming | 14.215.177.39 | | xiaoming | localhost | +---------+---------------+ 2 rows in set (0.00 sec)Copy
匿名アカウント
は、ユーザーが空で、任意のユーザー名に一致するアカウントです。次のコマンドは匿名アカウントを作成します。
CREATE USER ''@'localhost' IDENTIFIED BY 'pwd3';Copy
ID検証
データベースサーバーがクライアント接続を受信すると、まずID検証を実行し、ユーザー、ホスト、およびパスワードフィールドを追加します。 mysql .user テーブル内のレコードを比較して、アカウントが正当かどうかを確認します。
ここで質問があります: mysql.user テーブルに一致するレコードが複数ある場合、どのレコードが優先されるべきですか?
答えは「優先順位」です。一般的なルールは次のとおりです:
まず、[ホスト] フィールドを確認します。複数のホストが基準を満たす場合、一致スコアが最も高いレコード (IP アドレス > ワイルドカード %) が選択されます。
次に、「ユーザー」フィールドを確認します。複数のユーザーが条件を満たした場合、最も一致度が高いレコードが選択されます。匿名ユーザーは任意のユーザーと一致するため、一致度は最も低くなります。
優先順位の一致の例
たとえば、ローカル データベースに次の 2 つのアカウントがあるとします (パスワード フィールドは実際にはクリア テキストではありません)。
+------------+-----------+-----------+ | User | Host | Password | +------------+-----------+-----------+ | my_account | % | 123 | | | localhost | 456 | +------------+-----------+-----------+Copy
最終的にログインしたアカウントは 2 番目のレコードと一致します。 (読者はご自身で試してみてください。パスワードが 123 の場合はログインに失敗しますが、パスワードが 456 の場合はログインに成功します。)
mysql -u my_account -pCopy
なぜですか?一致する優先順位を確認します。
まず、[ホスト]フィールドを確認します。 localhost と % はすべて要件を満たしています。 localhost の一致度が % より高いため、2 番目のレコードが一致します。
次に、「ユーザー」フィールドを確認します。 2 番目のレコードは匿名アカウントであり、任意の User 値と一致するため、2 番目のレコードは要件を満たしています。
したがって、アカウント my_account の Host フィールドは % ですが、データベースにローカル (データベースが配置されているホスト) に接続すると、上記のルールが存在するため、MySQL はユーザーが匿名アカウント。
my_account のパスワードが匿名アカウントとは異なるため、パスワードの検証が失敗し、アクセスが拒否されます。
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
推奨読書:
react で選択した li を強調表示する手順の詳細な説明
node.js デプロイメントのスタートアップ バックグラウンドで永久に実行されるステップバイステップの説明
以上がMySQLデータベースへのアクセスが拒否された場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
