Quando instalo o MySQL via Yum, ele cria automaticamente o mysql
usuário e o grupo do sistema operacional. Em seguida mysqld
, executa como mysql
(em vez de root) e todos os arquivos no diretório de dados pertencem a mysql:mysql
.
Esta é obviamente uma prática de segurança correta, eu entendo porque isso acontece e não quero subvertê-la.
Quando estou administrando um sistema MySQL, acabei adquirindo o hábito de usar sudo
quando preciso interagir com um arquivo protegido (por exemplo, lendo um log binário com mysqlbinlog
, criando um tarball de backup, etc).
Também funcionaria adicionar meu usuário do sistema operacional ao grupo mysql? Existem grandes desvantagens disso que eu não estou considerando?
Ao exportar informações do MySQL para trabalhos usando mysqlbinlog, usar o sudo também é conveniente para mim, porque geralmente é para consertar ou solucionar problemas de algo quebrado e o tempo é uma preocupação.
Se você pretende reimportar dados extraídos do MySQL, precisará contornar o problema de problemas de permissão em algum momento . Ao criar arquivos dump usando a conta root, os arquivos criados assumem as permissões da conta root que o MySQL pode ter dificuldade em acessar esses arquivos. (Também evito permissões fixas como uma solução alternativa, pois fica confuso quando você não lida com isso regularmente)
O que posso sugerir:
Para tarefas administrativas regulares, em vez de usar minha conta local, costumo criar contas de 'serviço' do sistema operacional separadas para interagir com o MySQL que estão no grupo mysql.
Se você observar os processos em execução ( ps -ef | grep mysql ), verá que o MySQL é inicializado pela conta root ( mysqld_safe ) que (como você mencionou) executa o daemon MySQL ( mysqld ) sob a conta mysql.
Usando essa mesma abordagem, costumo criar scripts que posso executar com privilégios de root que chamam e executam outro arquivo em um shell do Linux como um usuário específico com menos permissões. Isso também torna mais fácil adicionar o mesmo script ao crontab raiz.
Começo criando uma conta de serviço chamada 'mysqlbackup' e no diretório inicial adiciono um arquivo .my.cnf
/------ conteúdo do arquivo
[cliente]
usuário = osbackup
senha = 12345
------/
Crie o script administrativo para ser executado pelo 'root' que executa outro arquivo de um shell
Crie seu script 'real' para ser executado como o usuário do sistema operacional ' mysqlbackup '