Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso fazer com que o MySQL grave arquivos de saída como um usuário diferente?


O arquivo de saída é criado pelo processo mysqld, não pelo seu processo cliente. Portanto, o arquivo de saída deve ser de propriedade do uid e gid do processo mysqld.

Você pode evitar ter que sudo para acessar o arquivo se você acessá-lo de um processo sob um uid ou gid que possa acessar o arquivo. Em outras palavras, se o mysqld cria arquivos pertencentes a uid e gid "mysql"/"mysql", então adicione sua própria conta ao grupo "mysql". Em seguida, você poderá acessar o arquivo, desde que o modo de permissão do arquivo inclua acesso de grupo.

Editar:

Você está excluindo um arquivo em /tmp, com um modo de permissão de diretório de rwxrwxrwt. O sticky bit ('t') significa que você pode remover arquivos apenas se seu uid for o mesmo que o proprietário do arquivo, independentemente das permissões no arquivo ou no diretório.

Se você salvar seu arquivo de saída em outro diretório que não tenha o sticky bit definido, poderá remover o arquivo normalmente.

Leia este trecho da página de manual para sticky(8):

DIRETÓRIOS FIXOS

Um diretório cujo 'sticky bit' é definido torna-se um diretório somente de acréscimo ou, mais precisamente, um diretório no qual a exclusão de arquivos é restrita. Um arquivo em um diretório fixo só pode ser removido ou renomeado por um usuário se o usuário tiver permissão de gravação para o diretório e o usuário for o proprietário do arquivo, o proprietário do diretório ou o superusuário. Esse recurso é aplicado de maneira útil a diretórios como /tmp, que devem ser graváveis ​​publicamente, mas devem negar aos usuários a licença para excluir ou renomear arbitrariamente os arquivos uns dos outros.