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

在我的评论中已经说过了,但我认为这是解决方案:

“文件”权限是全局设置的,也不是针对特定数据库的-我认为您忽略了这一点,因此用户没有权限... INTO OUTFILE(并且,也没有权限LOAD DATA INFILE...

编辑:授予此权限的查询(出我的脑海,未经测试):

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

EDIT2:要在 phpMyAdmin 中设置它,只需单击Server: localhost(打开 phpMyAdmin 时应该是起始页)然后单击Privileges,选择您的用户并添加对勾或FILE在数据部分中(所以,只需不要向下滚动并选择一个特定的数据库)

EDIT3:如果您使用方法 1,请确保您以 root 身份运行授权语句 - 用户不能为自己授予权限(如果可以,所有这些权限内容都是毫无意义的)

于 2010-07-27T09:11:40.937 回答