1044/1045 - Access denied for user 'username'@'yourhost'...
更新日時:
対応OS: Windows, macOS, Linux, iOS
Navicat対応製品: Navicat for MySQL, Navicat for MariaDB, Navicat Premium
Navicat対応バージョン: すべて
リモートのMySQLサーバーによって返されるそのエラーは、あなたのユーザーアカウントがサーバーに接続するための十分な権限を持たないことを表します。
MySQLデータベースがインストールされると、デフォルトで、"localhost"接続のみ許可されます。したがって、ほとんどのサーバーサイドスクリプトプログラムは、同じサーバーのローカルデータベースに簡単に接続することができます。いかなるクライアントコンピューターも、ユーザー権限が設定されるまで、リモートMySQLサーバーによってブロックされます。
あなたのデスクトップからリモートのMySQLサーバーにアクセスしたい場合、まず、MySQLの権限システムがどのように機能するかを知る必要があります。
ユーザー権限に関する情報は、mysqlデータベース(つまりmysqlという名前のデータベース)のuserとdb、host、tables_priv、columns_privテーブルに保存されます。MySQLサーバーは、起動時に、これらのテーブルの内容を読み込みます。
MySQLアクセスコントロールは2つの段階からなります:
- サーバーは、ユーザーのデスクトップ (ホストアドレスまたはIPアドレス) が接続を許可されているかどうかを確認します。
- 接続できると仮定して、サーバーは、ユーザーが発行する各リクエストについて、ユーザーがそのリクエストを実行するための十分な権限を持っているかどうかを確認します。例えば、Create table権限やDrop table権限、Alter table権限。
MySQLサーバーは、アクセスコントロールの両方の段階で、MySQLデータベースのUser、Db、Hostテーブルを使用します。
お使いのリモートサーバーがSSH接続をサポートしている場合、Navicatは現在のMySQL権限設定を変更することなく、SSHトンネルを介してリモートMySQLデータベースに接続することができます。 SSHトンネリングの大きな利点は、MySQLサーバーポートがブロックされている場合でも、ファイヤーウォールの後ろからMySQLサーバーに接続することができるということです。
手順:
MySQLサーバーのコマンドプロンプトで、以下のコマンドを実行することができます。通常、データベース管理者が権限を設定できる管理権限を持っていますので、データベース管理者に相談してください。
GRANT ALL PRIVILEGES ON *.* TO 'YourUserName'@'%' IDENTIFIED BY "YourPassword";
または
GRANT ALL PRIVILEGES ON *.* TO 'YourUserName'@'YourIP' IDENTIFIED BY "YourPassword";