Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich MySQL als ein anderer Benutzer outfiles schreiben lassen?

Die Ausgabedatei wird vom mysqld-Prozess erstellt, nicht von Ihrem Client-Prozess. Daher muss die Ausgabedatei der uid und gid des mysqld-Prozesses gehören.

Sie können vermeiden, sudo für den Zugriff auf die Datei verwenden zu müssen, wenn Sie von einem Prozess unter einer uid oder gid darauf zugreifen, der auf die Datei zugreifen kann. Mit anderen Worten, wenn mysqld Dateien erstellt, die UID und GID "mysql"/"mysql" gehören, dann fügen Sie Ihr eigenes Konto zur Gruppe "mysql" hinzu. Dann sollten Sie auf die Datei zugreifen können, vorausgesetzt, der Berechtigungsmodus der Datei beinhaltet den Gruppenzugriff.

Bearbeiten:

Sie löschen eine Datei in /tmp mit einem Verzeichnisberechtigungsmodus von rwxrwxrwt. Das Sticky-Bit ('t') bedeutet, dass Sie Dateien nur entfernen können, wenn Ihre UID mit dem Eigentümer der Datei identisch ist, unabhängig von Berechtigungen für die Datei oder das Verzeichnis.

Wenn Sie Ihre Ausgabedatei in einem anderen Verzeichnis speichern, in dem das Sticky-Bit nicht gesetzt ist, sollten Sie die Datei normal entfernen können.

Lesen Sie diesen Auszug aus der Manpage für sticky(8):

Sticky-Verzeichnisse

Ein Verzeichnis, dessen `Sticky Bit' gesetzt ist, wird zu einem Nur-Anhang-Verzeichnis, oder genauer gesagt zu einem Verzeichnis, in dem das Löschen von Dateien eingeschränkt ist. Eine Datei in einem Sticky-Verzeichnis darf von einem Benutzer nur entfernt oder umbenannt werden, wenn der Benutzer Schreibrechte für das Verzeichnis hat und der Benutzer der Besitzer der Datei, der Besitzer des Verzeichnisses oder der Superuser ist. Diese Funktion wird sinnvollerweise auf Verzeichnisse wie /tmp angewendet, die öffentlich beschreibbar sein müssen, aber Benutzern die Lizenz verweigern sollten, die Dateien anderer willkürlich zu löschen oder umzubenennen.