Używam zapytań MySQL cały czas w PHP, ale kiedy próbuję
LOAD DATA INFILE
Otrzymuję następujący błąd
# 1045 - Odmowa dostępu dla użytkownika „user” @ „localhost” (używając hasła: TAK)
Czy ktokolwiek wie, co to znaczy?
Używam zapytań MySQL cały czas w PHP, ale kiedy próbuję
LOAD DATA INFILE
Otrzymuję następujący błąd
# 1045 - Odmowa dostępu dla użytkownika „user” @ „localhost” (używając hasła: TAK)
Czy ktokolwiek wie, co to znaczy?
Właśnie napotkałem ten problem. Musiałem dodać LOCAL
do mojej instrukcji SQL.
Na przykład powoduje to problem z uprawnieniami:
LOAD DATA INFILE '{$file}' INTO TABLE {$table}
Dodaj LOCAL
do swojego oświadczenia, a problem z uprawnieniami powinien zniknąć. Tak jak to:
LOAD DATA LOCAL INFILE '{$file}' INTO TABLE {$table}
--local-infile
opcją.Miałem ten problem. Rozejrzałem się i nie znalazłem satysfakcjonującej odpowiedzi. Poniżej podsumowuję wyniki moich poszukiwań.
Błąd odmowy dostępu może oznaczać, że:
GRANT FILE on *.* to user@'localhost'
); lub,źródło
Spróbuj użyć tego polecenia:
To powinno działać. W moim przypadku zadziałało.
źródło
ERROR 1148 (42000): The used command is not allowed with this MySQL version
Upewnij się, że Twój użytkownik MySQL ma przyznane uprawnienie do PLIKU.
Jeśli korzystasz z hostingu współdzielonego, istnieje szansa, że zostanie to zablokowane przez dostawcę usług hostingowych.
źródło
Sznurek z Lyonu dał mi bardzo dobrą wskazówkę: w systemie Windows musimy używać slahes, a nie backslashes. Ten kod działa dla mnie:
źródło
Napotkałem ten sam problem i rozwiązałem go, wykonując następujące kroki:
W przypadku tego trzeciego punktu możesz zapoznać się z: https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv
BR,
OGŁOSZENIE
źródło
Przydarzyło mi się to również i pomimo wykonania wszystkich kroków opisanych przez Yamira w jego poście nie mogłem sprawić, by to zadziałało.
Plik znajdował się w /tmp/test.csv z 777 uprawnieniami. Użytkownik MySQL miał uprawnienia do plików, opcja LOCAL nie była dozwolona przez moją wersję MySQL, więc utknąłem.
Wreszcie udało mi się rozwiązać problem, uruchamiając:
źródło
Znalazłem łatwy, jeśli używasz wiersza poleceń
Zaloguj się jako
mysql -u[username] -p[password] --local-infile
następnie
SET GLOBAL local_infile = 1;
wybierz swoją bazę danych przez
use [db_name]
i w końcu
LOAD DATA LOCAL INFILE 'C:\\Users\\shant\\Downloads\\data-1573708892247.csv' INTO TABLE visitors_final_test FIELDS TERMINATED BY ','LINES TERMINATED BY '\r \n' IGNORE 1 LINES;
źródło
SET GLOBAL local_infile = 1;
nie wydaje się do pracy w RDS, ale w każdym razie, że nie--local-infile
wystarczyłyOdkryłem, że ładowanie tabel MySQL może być szybkie i bezbolesne (używałem skryptów menedżera modeli Python / Django):
1) utwórz tabelę ze wszystkimi kolumnami VARCHAR (n) NULL np:
mysql> CREATE TABLE cw_well2( api VARCHAR(10) NULL,api_county VARCHAR(3) NULL);
2) usuń nagłówki (pierwsza linia) z csv, a następnie załaduj (jeśli zapomnisz LOCAL, otrzymasz „# 1045 - Odmowa dostępu dla użytkownika 'user' @ 'localhost' (używając hasła: TAK)”):
mysql> LOAD DATA LOCAL INFILE "/home/magula6/cogswatch2/well2.csv" INTO TABLE cw_well2 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' -> ; Query OK, 119426 rows affected, 19962 warnings (3.41 sec)
3) zmień kolumny:
mysql> ALTER TABLE cw_well2 CHANGE spud_date spud_date DATE;
mysql> ALTER TABLE cw_well2 CHANGE latitude latitude FLOAT;
voilà!
źródło
Prawdopodobnie oznacza to, że podane hasło
'user'@'localhost'
jest nieprawidłowe.źródło