Realizando operações root mysql em scripts bash

2

O que é uma boa prática para executar operações de raiz em bancos de dados mysql em scripts bash?

Por exemplo, eu quero criar novos privilégios de banco de dados e de concessão, eu tenho que usar:

mysql -u $ROOT -p"$ROOTPASS" -e "create database $DBNAME; GRANT ALL PRIVILEGES ON $DBNAME.* T $DBUSER@localhost IDENTIFIED BY $DBPASS";

Mas isso requer o armazenamento da senha mysql para o usuário root no próprio script. Existe alguma maneira mais segura?
Devo criar um usuário separado para isso? Como configurar as permissões?

A coisa separada é como testar se a operação foi bem sucedida, e se não, reverter as mudanças que foram bem sucedidas (transação?)

    
por Sfisioza 24.09.2014 / 12:04

1 resposta

4

Como muitos programas, o MySQL (cliente) pode e irá ler as credenciais do arquivo em vez de confiar em opções de linha de comando ou ler credenciais de STDIN.

O método recomendado é armazenar suas credenciais criptografadas com o MySQL config Editor em ~/.mylogin.cnf

mysql_config_editor encrypts the .mylogin.cnf file so it cannot be read as clear text, and its contents when decrypted by client programs are used only in memory. In this way, passwords can be stored in a file in non-cleartext format and used later without ever needing to be exposed on the command line or in an environment variable. mysql_config_editor provides a print command that enables the user to display the file contents, but even in this case, password values are masked so as never to appear in a way that other users can see them.

Verifique o manual para a localização exata, mas, como alternativa, você configura um arquivo ~/.my.cnf que só é legível pelo seu usuário e armazena sua (s) senha (s) de texto não criptografado:

 [client]
 # The following password will be sent to all standard MySQL clients
 password="my_password"

Consulte também a seção de manual sobre segurança de senha

    
por 24.09.2014 / 12:47