これは特定のQです:Apacheをubuntuで並行して実行し、mysqlをこのVMおよびホストOSXで実行しています。本番環境をローカルでエミュレートしようとしているので、リモートに接続しますOS X上のmysqlサーバー。一部のクライアントではこれを正常に実行し、新しいクライアントを作成しました。
私のubuntuホストファイルにumhef.ca、osx、dom.bizがあります。 ubuntuからOSXにpingを実行すると、成功と正しいIPが報告されます。私のdrupal設定ファイルはホストを「osx」に設定し、ユーザーは「rootd」に設定されています。ユーザーはこのデータベースへの権限を持つOS xmysqlサーバーに設定されています。これを知るにはどうすればよいですか?mysqlで正常にセットアップされた他のユーザーを見ることができ、それらはこのユーザーと同じように見えます。
これが、このエラーが発生する理由のトラブルシューティングに役立つ背景です。PDOException:SQLSTATE [HY000] [1045]ユーザー 'rootd' @ 'umhef.ca'のアクセスが拒否されました(パスワード:YESを使用)
WTFはこのホストの出身ですか?それと他の人がOsx VMを指しているので、それは正当なホストです。だからこれをトラブルシューティングするために私はubuntuからこれを試みます:
mysql --Host=osx --user=rootd --password=mypassword
Access denied for user 'rootd'@'umhef.ca' (using password: YES)
Ubuntuのhostsファイルをコメントアウトしようとしましたが、ubuntuがHostパラメーターを無視するのはなぜですか?これをトラブルシューティングするには、他に何を使用する必要がありますか? thx、sam
Root @ localhostとしてMySQLにログインできる場合は、以下を実行します。
_SELECT USER(),CURRENT_USER();
_
これはあなたに何を伝えますか:
エラーが発生したとき
ユーザー 'rootd' @ 'umhef.ca'のアクセスが拒否されました(パスワードを使用:YES)
ホスト部分はテーブル_mysql.user
_によって決定されました。 MySQLには、ユーザー認証を行うための風変わりですが系統だった方法があります。暇なときに、私のDBA StackExchangeの投稿を読むことができます MySQLエラー:ユーザー 'a' @ 'localhost'のアクセスが拒否されました(パスワードを使用:YES) それがどのように機能するかについて。
とにかく、追いかけようとするために、これをしなさい
_SELECT user,Host FROM mysql.user;
_
これにより、可能なすべてのCURRENT_USER()
値が得られます(MySQLへの接続が許可されている方法)。私の推測では、あなたは_rootd@osx
_としてログインしようとしてログに記録していて、おそらく_mysql.user
_にエントリがありません。言い換えれば、あなたが実行した場合
_SELECT CONCAT(user,'@',Host) userhost FROM mysql.user
WHERE user='rootd' AND Host='osx';
_
何も得られません。あなたが実行する場合
_SELECT CONCAT(user,'@',Host) userhost FROM mysql.user WHERE user='rootd';
_
_[email protected]
_が表示される場合があります。そうでない場合、mysqldはあなたがそのように来ており、_mysql.user
_に一致する認証が存在しないと想定します。
OSでホストに変更を加えた場合は、必ずmysqldを再起動して、それらの変更を認識できるようにしてください。