sql >> Database >  >> RDS >> Mysql

Hoe kan ik MySQL outfiles laten schrijven als een andere gebruiker?

Het uitvoerbestand wordt gemaakt door het mysqld-proces, niet door uw clientproces. Daarom moet het uitvoerbestand eigendom zijn van de uid en gid van het mysqld-proces.

U kunt voorkomen dat u sudo moet gebruiken om toegang te krijgen tot het bestand als u het opent vanuit een proces onder een uid of gid die toegang heeft tot het bestand. Met andere woorden, als mysqld bestanden aanmaakt die eigendom zijn van uid en gid "mysql"/"mysql", voeg dan uw eigen account toe aan de groep "mysql". Dan zou u toegang moeten hebben tot het bestand, op voorwaarde dat de machtigingsmodus van het bestand groepstoegang omvat.

Bewerken:

U verwijdert een bestand in /tmp, met de mappermissiemodus rwxrwxrwt. De plakkerige bit ('t') betekent dat je alleen bestanden kunt verwijderen als je uid dezelfde is als de eigenaar van het bestand, ongeacht de machtigingen voor het bestand of de map.

Als u uw uitvoerbestand opslaat in een andere map waar de sticky bit niet is ingesteld, zou u het bestand normaal moeten kunnen verwijderen.

Lees dit fragment uit de man-pagina voor sticky(8):

STICKY DIRECTORIES

Een map waarvan de `sticky bit' is ingesteld, wordt een map die alleen kan worden toegevoegd, of, nauwkeuriger gezegd, een map waarin het verwijderen van bestanden is beperkt. Een bestand in een vastgezette map mag alleen door een gebruiker worden verwijderd of hernoemd als de gebruiker schrijfrechten heeft voor de map en de gebruiker de eigenaar van het bestand, de eigenaar van de map of de supergebruiker is. Deze functie wordt handig toegepast op mappen zoals /tmp die openbaar beschrijfbaar moeten zijn, maar gebruikers de licentie moeten ontzeggen om willekeurig elkaars bestanden te verwijderen of te hernoemen.



  1. geef sql-bestand door aan nodejs voor uitvoering als geheel

  2. Hoe maak ik een tabelalias in MySQL

  3. Query-cache uitschakelen met mysql.connector

  4. Kan SQL Server een webverzoek verzenden?