için reddediyorum PHP'de her zaman MySQL sorguları kullanıyorum, ancak LOAD VERİ YÜKLEME sürümünü denediğimde, şu hatayı alıyorum #1045 - Access denied for user 'user'@'localhost' (using password: YES)
Bunun ne anlama geldiğini bilen var mı?Erişim bilgilerini MySQL
cevap
Muhtemelen 'user'@'localhost'
için sağladığınız parola yanlıştır.
MySQL kullanıcınızın verilen FILE ayrıcalığına sahip olduğundan emin olun.
Paylaşılan web üzerinde barındırma varsa, bu barındırma sağlayıcınız tarafından engellenen bir şans var.
Paylaşılan bir web barındırma üzerinde: "LOAD DATA LOCAL INFILE" işlevini kullanmak yararlı olur mu? – Peter
Bu soruna yeni girdim. SQL deyimime "LOCAL" eklemek zorunda kaldım. LOAD DATA INFILE '{$file}' INTO TABLE {$table}
yazdıklarınıza "YEREL" ekleyin ve izin sorunu uzağa gitmeli:
Örneğin, bu izin sorununu verir. Bunun gibi: LOAD DATA LOCAL INFILE '{$file}' INTO TABLE {$table}
Bu farklı bir şey. Dosyanızı sunucuya geçici bir dizinde yükler. Bu bazen gereklidir, ancak eğer sistem zaten MySQL sunucusundaysa, sadece gereksiz iş yapıyorsunuz demektir. – jeffcook2150
Evet bu hile yaptım, ben veritabanı sunucusu bağlantı noktası ssh üzerinde iletiyordu ve sanırım LOCAL parçası – mike
@jeremysawesome benim için uzak veritabanı sunucusunda dosya arıyordu benim için bu hata üretir: Hata Kodu: 1148 Bu MySQL sürümünde kullanılan komutlara izin verilmiyor. Bu sorun için mysql dosyasının local-infile = 1 olarak değiştirilmesi ve bunun da başarısız olması gibi bazı yanıtlar denedim. – OrwellHindenberg
Bu sorunu yaşadım. Ben aradım ve tatmin edici bir cevap bulamadım. Aramalarımın sonuçlarının altında özetliyorum.
erişim hatası anlamına gelebilir yalanladı: (. Veritabanında HİBE DOSYASINI * user @ için 'şifre' tarafından belirlenen 'Localhost'a')
- 'kullanıcı' @ DOSYA ayrıcalığı yok 'localhost' ; veya, yüklemeye çalıştığınız dosya mysql sunucusunda çalışan makinede mevcut değil (LOAD DATA INFILE kullanılıyorsa); veya yüklemeye çalıştığınız dosya yerel makinenizde mevcut değil (LOAD DATA LOCAL INFILE kullanılıyorsa); veya,
- yüklemek çalıştığınız dosya dünyanın okunabilir değil (dosyayı ve dünyaca okunabilir olması tüm üst dizinleri gerekir: 755 dizinin chmod ve 744 file.dat chmod)
+1 version' bu MySQL ile izin verilmez: Bu benim için çalıştı: _The dosya çalışıyoruz yüklemek için dünya okunabilir değil (dosya ve tüm ana dizinleri dünyaca okunabilir olması gerekir: chmod 755 dizini; ve, chmod 744 file.dat) _. Tüm dizinlerimdeki izinleri değiştirmedim – gavdotnet
User Tatiana, yalnızca tüm sunucu için veritabanı başına FILE ayrıcalığını veremeyeceğinizi belirtir. Hibe komutu "kullanıcı adı '' parola '' IDENTIFIED BY '' kullanıcı adına '*. * Üzerinde GRANT FILE olacaktır. – JAL
@JAL Sanırım "GRANT FILE ON \ *. \ * Kullanıcısına ..."- Muhtemelen yıldız karakterleri –
Lyon dizisi bana çok iyi bir ipucu verdi: Pencerelerde, slash'leri kullanmalı ve ters eğik çizgi kullanmamalıyız. Bu kod benim için çalışıyor: Bu komutu kullanarak
File tempFile = File.createTempFile(tableName, ".csv");
FileUtils.copyInputStreamToFile(data, tempFile);
JdbcTemplate template = new JdbcTemplate(dataSource);
String path = tempFile.getAbsolutePath().replace('\\', '/');
int rows = template.update(MessageFormat
.format("LOAD DATA LOCAL INFILE ''{0}'' INTO TABLE {1} FIELDS TERMINATED BY '',''",
path, tableName));
logger.info("imported {} rows into {}", rows, tableName);
tempFile.delete();
Dene: Bu çalışması gerekir
load data local infile 'home/data.txt' into table customer;
. Benim durumumda çalıştı.
soyuldu bu benim için çalıştı, neden bu downvoted – metaprogrammer
' ERROR 1148 (42000) emin değilim: Kullanılan bu MySQL sürümü ile kullanılamaz izin ' – Stewart
Aynı sorunu yapıyorduk, bu adımları takib ederek çözmeye:
- devre dışı bırakmak secure_file_priv değişken (benim dosya yüklendiğinde
- benim özel MySQL kullanıcıya load_infile değişken
- büyük dosya iznini etkinleştirmek elbette bu 3 nokta için güvenli myslq/var/lib/mysql-dosyanın dizin)
değil/tmp klasörüne web sunucusu tarafından, sen başvurabilirsiniz: https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv
BR,
AD
Bu durum benim başıma ve bunu işe gelemedi, görevinde Yamir tarafından açıklanan tüm adımları takip rağmen.
Dosya 777 izinleriyle /tmp/test.csv dizinindeydi. MySQL kullanıcısı dosya izinlerine sahipti, LOCAL seçeneği MySQL sürümüm tarafından izinli değildi, bu yüzden takıldım.
Sonunda çalışan sorunu çözmeyi başardı:sudo chown mysql:mysql /tmp/test.csv
Bu çözüm benim için bir çekicilik gibi çalışır. Oyvermek – zhilevan
ben öyle düşünmüyorum. Aynı şifreyle diğer sorguları yapabilirim. – Brian