2

私はこのコードを実行しています:

include '../includes/connection.php';
$conn = dbConnect('backup');

$tableName  = 'orders';
$backupFile = '../backup/db-backup(' . $date . ').sql';
$query      = "SELECT * INTO OUTFILE '$backupFile' FROM $tableName";
$result = $conn->query($query) or die(mysqli_error($conn));

このエラーが発生します:

ユーザー'ideapale_amadmin'@'localhost'のアクセスが拒否されました(パスワードを使用:YES)

パスワードとユーザー名が正しいことはわかっています。クエリを実行せずにデータベースへの接続をテストしましたが、正常に機能します。また、現在使用しているユーザーにはすべての権限があります。したがって、私のsqlステートメントに何か問題があると思います。

「ユーザーのアクセスが拒否されました」というエラーが表示されるのはなぜですか?

4

2 に答える 2

3

申し訳ありませんが、明らかにパスワードが正しくありません。それか、権限が正しくありません。

于 2010-07-27T08:59:11.693 に答える
3

すでにコメントでこれを言っていますが、これが解決策だと思います:

「FILE」-パーミッションはグローバルに設定されていますが、特定のデータベースに対しても設定されていません-あなたはそれを見落としていると思いますので、ユーザーにはパーミッションがありません(... INTO OUTFILEまた、.LOAD DATA INFILE...

編集:この権限を付与するクエリ(私の頭から、テストされていません):

GRANT FILE ON *.* TO 'myuser'@'localhost' IDENTIFIED BY 'mypasswd';

EDIT2: phpMyAdmin でこれを設定するには、 をクリックしてServer: localhost(phpMyAdmin を開いたときに開始ページになるはずです)、 をクリックしてユーザーを選択し、データ セクションにPrivileges目盛りを追加するか(下にスクロールしないでください)特定のデータベースを選択します)FILE

EDIT3:方法 1 を使用する場合は、grant-statement を root として実行していることを確認してください。ユーザーは自分自身に権限を付与することはできません (可能であれば、このすべての権限は意味がありません)。

于 2010-07-27T09:11:40.937 に答える