sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo hacer que MySQL escriba archivos como un usuario diferente?

El archivo de salida es creado por el proceso mysqld, no por su proceso de cliente. Por lo tanto, el archivo de salida debe ser propiedad del uid y gid del proceso mysqld.

Puede evitar tener que sudo para acceder al archivo si accede desde un proceso bajo un uid o gid que puede acceder al archivo. En otras palabras, si mysqld crea archivos propiedad de uid y gid "mysql"/"mysql", agregue su propia cuenta al grupo "mysql". Entonces debería poder acceder al archivo, siempre que el modo de permiso del archivo incluya acceso de grupo.

Editar:

Está eliminando un archivo en /tmp, con un modo de permiso de directorio de rwxrwxrwt. El bit adhesivo ('t') significa que puede eliminar archivos solo si su uid es el mismo que el propietario del archivo, independientemente de los permisos en el archivo o el directorio.

Si guarda su archivo de salida en otro directorio que no tiene configurado el bit fijo, debería poder eliminar el archivo normalmente.

Lea este extracto de la página man de sticky(8):

DIRECTORIOS FIJOS

Un directorio cuyo 'sticky bit' está configurado se convierte en un directorio de solo agregar, o, más exactamente, un directorio en el que se restringe la eliminación de archivos. Un archivo en un directorio fijo solo puede ser eliminado o renombrado por un usuario si el usuario tiene permiso de escritura para el directorio y el usuario es el propietario del archivo, el propietario del directorio o el superusuario. Esta función se aplica de manera útil a directorios como /tmp, que debe ser de escritura pública, pero debe negar a los usuarios la licencia para eliminar o cambiar el nombre de los archivos de forma arbitraria.