Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] É possível digitar a senha de outra maneira? É obrigatório deixar a senha exposta no código?

Eu achei inseguro deixar nossa senha de MySQL digitada diretamente no código. É possível acessar nossa conta de uma maneira que não a exponha?

1 resposta
solução!

Olá! Tudo bem? É uma boa prática deixarmos informações sensíveis da nossa aplicação fora do código, uma das melhores formas de fazer isso é usando variáveis de ambiente, que são variáveis que podemos deixar disponíveis no ambiente que estamos trabalhando, normalmente a nossa máquina. Uma forma bem prática de fazer isso é usando arquivos .env:

# arquivo .env
SENHA_MYSQL=root

Esse tipo de arquivo é um padrão comum, onde armazenamos informações sensíveis e depois carregamos essa informação para o ambiente com o auxílio de bibliotecas, por exemplo a python-dotenv: (Instalação via terminal com pip)

python -m pip install python-dotenv  

Com essa biblioteca instalada, você pode acessar as variáveis do .env dessa forma:

import os
from dotenv import load_dotenv

# Carrega as variáveis
load_dotenv()

# Acessa a variável pela biblioteca os (operational system)
senha_mysql = os.environ.get("SENHA_MYSQL")

Depois, basta colocar .env no seu arquivo .gitignore se estiver usando o github para armazenar seu código, para não deixar informações sensíveis na internet. Se preferir, também é possível não usar o arquivo .env, e ao invés disso definir as variáveis no terminal do seu computador:

  • para Linux

    export SENHA_MYSQL=root
  • para Windows

    set SENHA_MYSQL=root

E então acessar diretamente no código, sem precisar da python-dotenv:

import os

# Acessa a variável diretamente
senha_mysql = os.environ.get("SENHA_MYSQL")

O problema dessa abordagem é que as variáveis vão ser armazenadas de forma temporária, então se você fechar o terminal e abrir de novo pode ser que ela não esteja mais disponível, então vai ser preciso usar esse comando todas as vezes que você for usar a aplicação. Porém, essa abordagem é a mais usada em ambiente de produção, onde você pode definir essas variáveis de forma permanente na máquina do servidor com comandos do tipo:

setx SENHA_MYSQL root

O comando setx define variáveis de forma permanente, mas é bom evitar esse tipo de comando se você estiver usando sua máquina pessoal, porque variáveis de ambiente podem causar algumas complicações se não forem definidas com cuidado. Espero ter ajudado!