62

mysql データベースと対話するために、php Web ページで使用されるいくつかの関数を作成しました。サーバーでそれらをテストすると、次のエラーが発生します。

"Connect failed: Access denied for user 'root'@'localhost' (using password: YES)" 

PCで(XAMPPを使用して)それらを使用でき、サーバーのコマンドラインを使用してデータベースのテーブルをナビゲートできます。ただし、Web ページは接続に失敗します。パスワードを確認しましたが、結果はありません。正解です (そうしないと、コマンド ラインから mysql にログインできませんでした)。

関数の呼び出しは次のとおりです。

$conn = new mysqli("localhost", "root", "password", "shop");

サーバーに何かを設定する必要がありますか? ありがとう

編集: PHP バージョン 5.3.3-7+squeeze1 mysql バージョン: 5.1.49-3 両方とも debian で

4

11 に答える 11

92

私はこのように解決しました:ルートユーザー名でログインしました

mysql -u root -p -h localhost

で新しいユーザーを作成しました

CREATE USER 'francesco'@'localhost' IDENTIFIED BY 'some_pass';

次に、データベースを作成しました

CREATE DATABASE shop;

このデータベースの新しいユーザーに権限を付与しました

GRANT ALL PRIVILEGES ON shop.* TO 'francesco'@'localhost';

次に、ルートからログアウトし、新しいユーザーにログインしました

quit;
mysql -u francesco -p -h localhost

スクリプトを使用してデータベースを再構築しました

source shop.sql;

それだけです..これで、phpは呼び出しに問題なく動作します

 $conn = new mysqli("localhost", "francesco", "some_pass", "shop");

お時間をいただきありがとうございました:)

于 2011-06-23T12:30:02.953 に答える
10

DB に root@localhost のユーザー アカウント エントリはありますか? MySQL では、ホストごとに異なるユーザー アカウント権限を設定できます。接続元のホストと組み合わせて同じ名前を持つ複数の異なるアカウントが存在する可能性があります。最も一般的なのは root@127.0.0.1 と root@localhost です。これらには、異なるパスワードと権限を設定できます。root@localhost が存在し、期待する設定になっていることを確認してください。

あなたの説明に基づいて、これが問題であると確信しています。別の PC からの接続は root@localhost とは異なるアカウントを使用し、コマンド ラインは root@127.0.0.1 を使用して接続すると思われます。

于 2011-06-22T19:09:46.937 に答える
8

これまでのおっしゃる通り、PHP5.3 の MySQL ドライバーが古いバージョンの MySQL バージョン 4.1 に接続できないことが問題のように思えます。http://www.bitshop.com/Blogs/tabid/95/EntryId/67/PHP-mysqlnd-cannot-connect-to-MySQL-4-1-using-old-authentication.aspxをご覧ください。

ここには、いくつかの有用な回答を含む同様の質問があります。古い認証を使用して MySQL 4.1+ に接続できません

SELECT `User`, `Host`, Length(`Password`) FROM mysql.user

これにより、古いパスワードを持つアカウントには 16 が返され、新しいパスワードを持つアカウントには 41 が返されます (パスワードがまったくないアカウントには 0 が返されます。それらも処理する必要がある場合があります)。MySQL フロントエンドのユーザー管理ツール (存在する場合) を使用するか、

SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges
于 2011-06-22T20:18:05.353 に答える
6

私もこの問題を抱えていました。しかし、これは別の理由によるものでした。私のパスワードは文字で始まりました$... 例えば$MyPassword 、私はそれを変更し#MyPassword、問題は解決しました。

于 2015-05-07T10:32:09.017 に答える
5

ここかな?

コードは次のようにする必要があると思います。


$connect = new mysqli("host", "root", "", "dbname");

root にはパスワードがないためです。これ(using password: YES)は、「このユーザーでパスワードを使用しています」と言っています

于 2014-04-04T17:15:30.460 に答える
0

PHPmyAdmin (WAMP)の権限を編集します。パスワードとユーザー名は作成されていないことに注意してください。したがって、作成または編集して、php の sql 接続で機能するようにしてください。それがうまくいくことを願っています

于 2013-03-21T11:51:07.100 に答える
0

変数を初期化して、接続オブジェクトで使用してみてください。

$username ="root";
$password = "password";
$host = "localhost";
$table = "shop";
$conn = new mysqli("$host", "$username", "$password", "$table");
于 2011-06-22T19:09:01.697 に答える