php mysqli_query Доступ запрещен для пользователя

Хорошо, я здесь в тупике. Я установил AWS RDS (бесплатный уровень) и протестировал соединение через терминал Mac OS X, и я могу подключиться отлично.

Я также могу выдать заявление о соединении с php (которое, похоже, работает) следующим образом:

$this -> _mysqli = new mysqli( );
$this -> _mysqli -> init( );
$this -> _mysqli -> options(MYSQLI_OPT_LOCAL_INFILE, true);
$this -> _mysqli -> real_connect($host, $username, $password, $db, $port);
print_r( $this -> _mysqli );

/*print_r returns*/
mysqli Object ( 
    [affected_rows] => 0 
    [client_info] => 5.5.33 
    [client_version] => 50533 
    [connect_errno] => 0 
    [connect_error] => 
    [errno] => 0 
    [error] => 
    [error_list] => Array ( ) 
    [field_count] => 0 
    [host_info] => sadmicrowave-dev.*****.*****-****.rds.amazonaws.com via TCP/IP 
    [info] => 
    [insert_id] => 0 
    [server_info] => 5.6.13 
    [server_version] => 50613 
    [stat] => Uptime: 26448 Threads: 3 Questions: 27070 Slow queries: 0 Opens: 1962 Flush tables: 1 Open tables: 98 Queries per second avg: 1.023 
    [sqlstate] => 00000 
    [protocol_version] => 10 
    [thread_id] => 122 
    [warning_count] => 0 ) 

Что, кажется, указывает мне на то, что соединение удалось; верно? После этого долгого знакомства с моей системой возникла моя проблема. Далее в моем классе у меня есть метод отправки запроса; это выглядит так:

$q = mysqli_query( 
       $this -> _mysqli, 
      "LOAD DATA INFILE '$FILE'
       IGNORE INTO TABLE `php-challenge-apr-2014`
       FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
       LINES TERMINATED BY '\n'
       IGNORE 1 LINES"
);

Но этот запрос возвращает следующую ошибку (несмотря на то, что я работаю в том же экземпляре класса, что означает, что $this -> _mysqli уже был установлен в операторе подключения выше)

Access denied for user 'sadmicrowave'@'%' (using password: YES)]"}

Что за F происходит?


person sadmicrowave    schedule 18.04.2014    source источник
comment
У пользователя sadmicrowave есть разрешение на ФАЙЛ? другие запросы работают?   -  person Your Common Sense    schedule 18.04.2014
comment
Похоже на дубликат ошибок разрешения stackoverflow.com/questions / 1014724 /   -  person Your Common Sense    schedule 18.04.2014
comment
@YourCommonSense нет, похоже, у меня есть FILE разрешения. Я еще являюсь администратором сервера, когда запускаю: GRANT FILE ON challenge.* TO sadmicrowave@'%' identified by '*******'; на RDS, я получаю ERROR 1045 (28000): Access denied for user 'sadmicrowave'@'%' (using password: YES)   -  person sadmicrowave    schedule 18.04.2014
comment
но на всякий случай - запрос SELECT работает? или выдает ту же ошибку? если select работает - то это видимо разрешения и надо их перепроверять   -  person Your Common Sense    schedule 18.04.2014
comment
@YourCommonSense да, я могу успешно запросить, используя простой оператор запроса select   -  person sadmicrowave    schedule 18.04.2014


Ответы (1)


Это ТАК глупо с моей стороны, но я понял свою проблему, и я забыл ключевое слово local в запросе LOAD DATA. Без ключевого слова local сервер MySQL думает, что я пытаюсь получить доступ к файлу на сервере, а не на моем локальном хосте. Конечно, в этом случае Amazon, вероятно, заблокировал эту функцию на своих экземплярах RDS по какой-то причине; отсюда и проблема Access Denied.

person sadmicrowave    schedule 18.04.2014