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

Como fazer login automático no MySQL a partir de um script de shell?

Formas alternativas de escrever essas opções.


Você pode escrever
mysql -u "$MYSQL_ROOT" -p"$MYSQL_PASS" -e "SHOW DATABASES"

para passar strings vazias como argumentos separados. Seu comentário abaixo indica que o cliente ainda solicitará uma senha. Provavelmente ele interpreta o argumento vazio como um nome de banco de dados e não como a senha. Então você pode tentar o seguinte em vez disso:
mysql --user="$MYSQL_ROOT" --password="$MYSQL_PASS" -e "SHOW DATABASES"

arquivo .my.cnf


Mas mesmo que haja uma maneira, eu ainda sugiro que você use um ~/.my.cnf arquivo em vez disso. Os argumentos na linha de comando provavelmente estão incluídos em uma lista de processos gerada por ps -A -ocmd , para que outros usuários possam vê-los. O .my.cnf por outro lado, pode (e deve) ser legível apenas por você (usando chmod 0600 ~/.my.cnf ), e será usado automaticamente. Faça com que esse arquivo inclua as seguintes linhas:
[client]
user=root
password=

Em seguida, um simples mysql -e "SHOW DATABASES" será suficiente, pois o cliente obterá suas credenciais desse arquivo.

Consulte 6.1.2.1. Diretrizes do usuário final para segurança de senha pelas várias maneiras pelas quais você pode fornecer uma senha e suas respectivas vantagens e desvantagens. Consulte 4.2.3.3. Usando arquivos de opção para informações gerais sobre este .my.cnf Arquivo