我正在运行此代码:
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'(使用 密码:是)
我知道密码和用户名是正确的,我已经测试过连接到数据库而不运行查询,并且工作正常。此外,我当前使用的用户具有所有权限。因此,我认为我的sql语句有问题。
为什么我收到'拒绝用户访问'错误?
答案 0 :(得分:3)
很抱歉这么说,但显然密码不正确。要么你或你有不正确的特权。
答案 1 :(得分: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,请确保以root身份运行grant-statement - 用户无法为自己授予权限(如果可以的话,所有这些权限都将是无谓)