1. ホーム
  2. mysql

[解決済み] MySQLのリモート接続を有効にします。エラー 1045 (28000)。ユーザーへのアクセスが拒否されました

2022-05-10 14:11:14

質問

MySQL 5.1.31 は Windows XP で動作しています。

より ローカル MySQLサーバ(192.168.233.142)以下のようにrootで接続できる。

>mysql --host=192.168.233.142 --user=root --password=redacted

からの リモート のマシン(192.168.233.163)では、mysqlのポートが開かれていることが確認できます。

# telnet 192.168.233.142 3306
Trying 192.168.233.142...
Connected to 192.168.233.142 (192.168.233.142).

しかし リモート のマシンで、受信します。

# mysql --host=192.168.233.142 --user=root --password=redacted
ERROR 1045 (28000): Access denied for user 'root'@'192.168.233.163' (using password: YES)

mysql.userに2つしかエントリがありません。

Host         User     Password
--------------------------------------
localhost    root     *blahblahblah
%            root     [same as above]

リモートアクセスを可能にするために、さらに必要なことは何ですか?

EDIT

下のPauloさんの提案の通り、mysql.userの%という項目をIP固有の項目に置き換えてみたところ、私のユーザーテーブルは次のようになりました。

Host             User     Password
------------------------------------------
localhost        root     *blahblahblah
192.168.233.163  root     [same as above]

その後、マシンを再起動しましたが、問題は解消されません。

解決方法を教えてください。

パウロの協力で解決に至った。 それは、以下の組み合わせでした。

  • パスワードにドル記号が含まれている
  • Linuxのシェルから接続しようとしていた

bash シェルでは、ドル記号は特殊文字として扱われ 展開 を環境変数に変換してしまうので、バックスラッシュでエスケープする必要があります。ちなみに はしない。 ドル記号がパスワードの最後の文字である場合は、この処理を行う必要があります。

例として、パスワードが "pas$word" の場合、Linux の bash からは次のように接続しなければなりません。

# mysql --host=192.168.233.142 --user=root --password=pas\$word