Como instalar o phpMyAdmin com Nginx no Debian 12, 11 ou 10

phpMyAdmin é uma ferramenta de código aberto amplamente utilizada, escrita em PHP, projetada para lidar com a administração de MySQL e MariaDB pela web. Ele oferece uma interface gráfica intuitiva para executar diversas operações de banco de dados, como criar, modificar e excluir bancos de dados, tabelas, campos ou linhas, executar instruções SQL e gerenciar permissões de usuário. A instalação do phpMyAdmin no Debian 12, 11 ou 10 envolve a configuração manual da pilha LEMP (Linux, NGINX, MySQL/MariaDB, PHP), seguida do download e configuração da versão mais recente do phpMyAdmin.

Usar o phpMyAdmin simplifica o gerenciamento do banco de dados, tornando-o acessível até mesmo para usuários que podem não se sentir confortáveis ​​em usar a linha de comando para operações de banco de dados. Este guia orientará você nas etapas para instalar manualmente a pilha LEMP, configurar o phpMyAdmin e proteger sua configuração.

Instale LEMP Stack no Debian para phpMyAdmin

Passo 1: Atualizando o Sistema Debian

Comece a atualizar seu sistema Debian com os pacotes mais recentes para uma configuração segura e sem erros. Esta etapa proativa visa reduzir a probabilidade de conflitos durante o processo de instalação.

sudo apt update && sudo apt upgrade

Se você atualizar o Kernel ou muitos pacotes, será necessário reinicializar.

Etapa 2: instalar o Nginx

Primeiro, instale o Nginx para estabelecer uma pilha LEMP. Execute o seguinte comando:

sudo apt install nginx

Normalmente, o sistema habilita o serviço Nginx por padrão após a instalação. No entanto, verifique sempre com prudência o seu estado e certifique-se de que funciona conforme esperado:

systemctl status nginx

Se o servidor não estiver ativo, use o seguinte comando para habilitar o Nginx e garantir que ele seja iniciado automaticamente a cada reinicialização:

sudo systemctl enable nginx --now

Este comando instala a versão padrão do Nginx.

Nota: Se você estiver interessado em implantar a versão estável mais recente ou a versão principal do Nginx, considere seguir nosso guia em como atualizar o Nginx no Debian 12, 11 ou 10 Linux.

Etapa 3: Instale o MariaDB

Em seguida, instale o componente de banco de dados na configuração da pilha LEMP. Muitos escolhem o MariaDB em vez do MySQL devido ao seu desempenho superior e recursos adicionais.

Para instalar o MariaDB, execute o seguinte:

sudo apt install mariadb-server mariadb-client

Nota: Se você quiser instalar uma versão diferente do MariaDB dos repositórios oficiais do MariaDB.org, nosso guia sobre instalando MariaDB 11.x ou 10.x no Debian 12, 11 ou 10 Linux.

Após a conclusão, confirme a ativação e o funcionamento correto do serviço MariaDB, semelhante à sua verificação do Nginx:

systemctl status mariadb

Se o MariaDB não estiver ativado, use o comando abaixo para ativá-lo e garantir que ele seja iniciado na reinicialização.

sudo systemctl enable mariadb --now

Para reforçar a segurança do seu MariaDB, execute o script de segurança fornecido, mysql_secure_installation, durante o processo de instalação. As configurações padrão de uma nova instalação do MariaDB geralmente deixam vulnerabilidades que agentes mal-intencionados podem explorar.

sudo mysql_secure_installation

A execução do script de segurança orienta você através de várias etapas para fortalecer a segurança do seu MariaDB. Essas etapas envolvem definir a senha root, limitar o acesso remoto, excluir contas de usuários anônimos e remover o banco de dados de teste.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] Y <---- Type Y then press the ENTER KEY.
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y <---- Type Y then press the ENTER KEY.
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y <---- Type Y then press the ENTER KEY.
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y <---- Type Y then press the ENTER KEY.
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y <---- Type Y then press the ENTER KEY.
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y <---- Type Y then press the ENTER KEY.
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Passo 4: Instale o PHP

Instale o serviço PHP para concluir a configuração da pilha LEMP. PHP, por meio do serviço PHP-FPM e módulos adicionais necessários ao phpMyAdmin, serve como ponte entre Nginx e MariaDB.

Nota: Se você deseja instalar uma versão específica do PHP, consulte nosso guia em instalando qualquer versão do PHP 8.x disponível no Debian 12, 11 ou 10 Linux.

Para implantar PHP e PHP-FPM, junto com os módulos necessários em seu sistema Debian, execute o seguinte:

sudo apt install php-fpm php-mbstring php-bcmath php-xml php-mysql php-common php-gd php-cli php-curl php-zip php-gd

Após a instalação do PHP, confirme o status do serviço PHP, assim como fez para MariaDB e Nginx.

Para o PHP 8.2, que é o padrão no Debian Bookworm, por exemplo, o comando específico seria:

systemctl status php8.2-fpm

Caso o serviço PHP permaneça inativo, use o seguinte comando para habilitá-lo e garantir que ele seja iniciado automaticamente a cada reinicialização.

sudo systemctl enable php-fpm --now

Finalize o phpMyAdmin com Nginx e Debian

Esta seção explica o procedimento para obter o arquivo phpMyAdmin e configurar os diretórios, permissões e entradas de banco de dados necessários.

Etapa 1: Crie um superusuário para phpMyAdmin

Convencionalmente, você pode acessar o phpMyAdmin usando o usuário root. No entanto, para aderir a práticas de segurança robustas, crie um superusuário distinto em vez de usar o usuário root. Este conceito se alinha com a prática do Linux de aproveitar um usuário sudo em vez de fazer login diretamente como root.

Primeiro, autentique-se na interface do terminal:

sudo mariadb -u root

Após a autenticação bem-sucedida, a etapa subsequente envolve a criação de um banco de dados no terminal MariaDB.

CREATE USER PMAUSER IDENTIFIED BY 'password here change';

Em seguida, crie um usuário e conceda a ele as permissões necessárias, conforme ilustrado abaixo:

GRANT ALL PRIVILEGES ON *.* TO 'PMAUSER'@'localhost' IDENTIFIED BY 'password here change' WITH GRANT OPTION;

Substituindo a senha do espaço reservado “senha aqui muda” com uma senha segura é fundamental antes de executar os comandos.

Ao estabelecer o usuário e definir as permissões, lembre-se de atualizar os privilégios para as alterações.

FLUSH PRIVILEGES;

Para sair do terminal MariaDB, utilize o seguinte comando.

QUIT;

Etapa 2: Baixe o código-fonte do phpMyAdmin

Esta seção esclarece como obter o arquivo fonte do phpMyAdmin. Aproveitar o terminal de linha de comando fornece um método eficiente para baixar a versão mais recente em todos os idiomas.

Para baixar o arquivo phpMyAdmin, execute o seguinte comando no terminal.

DATA="$(wget https://www.phpmyadmin.net/home_page/version.txt -q -O-)"
URL="$(echo $DATA | cut -d ' ' -f 3)"
VERSION="$(echo $DATA | cut -d ' ' -f 1)"
wget https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-all-languages.tar.gz

Se você deseja a versão somente em inglês do phpMyAdmin, substitua a última linha do comando anterior pelo seguinte:

wget https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-english.tar.gz

Após o download, a etapa seguinte é extrair o arquivo phpMyAdmin executando o comando abaixo:

tar xvf phpMyAdmin-${VERSION}-all-languages.tar.gz

Etapa 3: configurar o phpMyAdmin

A próxima fase envolve a migração de todos os arquivos extraídos para seu destino final no diretório /var/www/ usando o comando mv.

sudo mv phpMyAdmin-*/ /var/www/phpmyadmin

Ao instalar o phpMyAdmin a partir da fonte, você observará que um diretório TMP não existe por padrão. Conseqüentemente, seria melhor se você criasse esse diretório manualmente.

sudo mkdir /var/www/phpmyadmin/tmp

O diretório phpMyAdmin inclui um arquivo de exemplo de configuração padrão, que você precisa renomear para que o phpMyAdmin o reconheça. Use o comando CP para criar uma cópia do arquivo padrão no diretório /var/www/phpmyadmin/, garantindo um backup.

Para replicar config.sample.inc.php para config.inc.php, execute o seguinte comando:

sudo cp /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php

Após copiar o arquivo, abra-o com um editor de texto de sua preferência. Neste exemplo, estamos usando o editor de texto nano:

sudo nano /var/www/phpmyadmin/config.inc.php

phpMyAdmin emprega uma cifra Blowfish. Para modificar esta configuração, navegue até a linha que começa com $cfg['blowfish_secret'].

$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Atribua uma sequência de 32 caracteres aleatórios entre aspas simples. Use o programa pwgen como um método conveniente para gerar esta string. Execute o seguinte comando de terminal para instalar o pwgen:

Isso mantém todas as ações claras e diretamente atribuídas ao usuário (ou a quem está realizando a ação).

sudo apt install pwgen 

Após a instalação, execute o comando abaixo:

pwgen -s 32 1

Este comando irá gerar uma sequência de 32 caracteres aleatórios para servir como segredo do baiacu.

Exemplo de inserção da cifra no arquivo de configuração (Não copie):

UvqAlsvTxRdYIyO8TnlkJsVQaWs2LfgL

Exemplo no arquivo de configuração:

Para a maioria dos usuários, as configurações padrão restantes devem ser adequadas. No entanto, se o seu servidor estiver localizado em outro servidor da sua rede, você precisará localizar e modificar a linha $cfg['Servers'][$i]['host'] para refletir o endereço IP privado. Uma ilustração desta modificação é mostrada abaixo:

$cfg['Servers'][$i]['host'] = '192.168.55.101';

Etapa 4: configurar permissões de arquivo phpMyAdmin

Atribuir permissões ao proprietário do diretório para www-user é crucial para garantir compatibilidade e segurança.

Para definir a permissão chown:

sudo chown -R www-data:www-data /var/www/phpmyadmin/

Para definir a permissão chmod:

sudo find /var/www/phpmyadmin/ -type d -exec chmod 755 {} \;
sudo find /var/www/phpmyadmin/ -type f -exec chmod 644 {} \;

Na seção seguinte, discutiremos a criação e configuração do bloco de serviço Nginx para o seu serviço phpMyAdmin.

Configurando um bloco de servidor NGINX para phpMyAdmin

Para acessar a interface web do phpMyAdmin, crie um bloco de servidor NGINX como uma etapa essencial. Estabeleça um subdomínio distinto para reforçar as medidas de segurança e evitar ataques de força bruta, o que é altamente recomendado. Sinta-se à vontade para nomear este subdomínio como achar adequado.

Etapa 1: Criar bloco de servidor Nginx para phpMyAdmin no Debian

Vamos começar criando e abrindo seu bloco de servidor com o editor de texto nano. Execute o seguinte comando:

sudo nano /etc/nginx/sites-available/phpmyadmin.conf

Etapa 2: configurar o bloco de servidor Nginx

Após abrir com sucesso o arquivo de bloco do servidor, copie e cole o seguinte texto no arquivo. Certifique-se de substituir o URL do domínio pelo seu:

server {
  listen 80;
  listen [::]:80;
  server_name pma.example.com;
  root /var/www/phpmyadmin/;
  index index.php index.html index.htm index.nginx-debian.html;

  access_log /var/log/nginx/phpmyadmin_access.log;
  error_log /var/log/nginx/phpmyadmin_error.log;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ ^/(doc|sql|setup)/ {
    deny all;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

  location ~ /\.ht {
    deny all;
  }
}

Aqui estão alguns pontos críticos a serem observados sobre o exemplo acima:

  • /run/php/php8.2-fpm.sock; – Este caminho precisa refletir a versão do PHP-FPM em uso. Por exemplo, pode ser 8,3, 8,1, 8,0, 7,4, etc.
  • root /var/www/phpmyadmin/; – Refere-se ao caminho definido neste guia. Se o seu phpMyAdmin estiver localizado em outro lugar, atualize esta linha adequadamente.

Se você for a única pessoa acessando o servidor a partir de um endereço IP estático, considere adicionar o seguinte código acima da primeira entrada de local:

  allow <your ip address>;
  deny all; 

  location / {
    try_files $uri $uri/ /index.php;
  }

O código acima bloqueia efetivamente visitantes não autorizados da página com um erro 403, concedendo acesso apenas ao seu endereço IP. É uma defesa substancial contra ataques de força bruta, embora possa não ser adequada para todas as configurações.

Passo 3: Salvando e Saindo do Editor de Texto

Para salvar suas alterações, pressione (CTRL+O), e para sair do editor, pressione (CTRL+X).

Etapa 4: Criando um link simbólico para o arquivo de configuração

Em seguida, crie um link simbólico do diretório sites disponíveis para o diretório habilitado para sites onde reside o arquivo de configuração:

sudo ln -s /etc/nginx/sites-available/phpmyadmin.conf /etc/nginx/sites-enabled/

Etapa 5: realizando um teste de simulação

Um teste de simulação é crucial antes de reiniciar o serviço NGINX. Esta medida é essencial em ambientes ativos, garantindo que quaisquer modificações nos seus arquivos de configuração não acionarão erros NGINX:

sudo nginx -t

Se sua configuração estiver livre de erros, a seguinte saída irá recebê-lo:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Etapa 6: reiniciando seu serviço NGINX

Finalmente, para que as alterações tenham efeito, reinicie o serviço NGINX:

sudo systemctl restart nginx

Isso encerra esta seção sobre a criação de um bloco de servidor NGINX para phpMyAdmin. Na próxima seção, você abrirá e fará login na interface web do phpMyAdmin.

Navegando na interface web do phpMyAdmin

Comece sua interação com a interface do phpMyAdmin iniciando seu navegador preferido. Insira pma.example.com na barra de endereço, substituindo “exemplo” pelo nome de domínio ou endereço IP do servidor. Lembre-se, você também pode usar localhost em ambientes internos.

Após fazer isso, você chegará à tela de login do phpMyAdmin, conforme demonstrado na imagem a seguir:

Navegue pela tela de login inserindo suas credenciais e selecionando “continuar” ou “login”. Esta ação concede acesso ao painel do phpMyAdmin, representado pela imagem a seguir.

Como usuário iniciante do phpMyAdmin, você pode querer se familiarizar com a “página de status”. Ele fornece uma visão abrangente sobre o status e a integridade do seu banco de dados.

Além da página de estatísticas, o phpMyAdmin também incorpora um “sistema de aconselhamento”. Este recurso útil oferece sugestões para melhorias de desempenho.

No entanto, é prudente lembrar que embora o consultor recomende esperar 24 horas, a maioria considera um mínimo de 72 horas mais ideal. Isso garante que a amostragem do banco de dados ocorra durante um período prolongado, fornecendo recomendações mais precisas.

Além disso, o sistema orientador não deve ser sua única base para mudanças. Alterar seus arquivos de configuração MySQL ou MariaDB requer reflexão cuidadosa, testes completos e possivelmente múltiplas iterações. O objetivo é otimizar as configurações para obter os melhores resultados, e isso geralmente leva tempo.

phpMyAdmin seguro através do certificado SSL Let's Encrypt

Crie um certificado SSL via Certbot

Para reforçar a segurança da sua instância phpMyAdmin, execute o Nginx sobre HTTPS usando um certificado SSL. Aproveitar a Let's Encrypt, uma autoridade de certificação renomada que oferece certificados SSL gratuitos, automatizados e abertos, fornece o método mais direto.

Primeiro, instale o pacote certbot, que auxilia no gerenciamento de certificados Let's Encrypt SSL, executando:

sudo apt install python3-certbot-nginx -y

Após concluir a instalação do pacote certbot, crie seu certificado SSL executando:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d pma.example.com

Ao iniciar o processo de instalação do certificado:

  • Um prompt perguntará sobre o recebimento de e-mails da EFF (Electronic Frontier Foundation).
  • Quer você concorde (Y) ou discorde (N), o sistema instalará e configurará automaticamente seu certificado TLS.
  • A configuração abrange a aplicação de redirecionamentos HTTPS 301, a adição de um cabeçalho Strict-Transport-Security e a implementação do grampeamento OCSP.
  • Lembre-se de substituir o e-mail e o nome de domínio no comando por seus dados precisos.

Ao concluir esta configuração, seu URL migrará de HTTP://pma.example.com para HTTPS://pma.example.com, redirecionando automaticamente qualquer acesso ao URL HTTP anterior para o URL HTTPS seguro.

Crie um Cron Job para renovação SSL

Estabeleça um cron job que renove automaticamente seus certificados para agilizar ainda mais o processo. Certbot fornece um script de renovação automática para essa finalidade. Antes de configurar este trabalho, execute criteriosamente um teste de simulação para confirmar que tudo funciona corretamente usando o seguinte comando:

sudo certbot renew --dry-run

Para agendar a renovação automática, abra o arquivo crontab executando:

sudo crontab -e

Verifique regularmente a renovação do certificado – pelo menos uma vez por dia – para garantir que seu certificado permaneça válido. Se for necessária uma renovação, o script atualizará automaticamente o certificado. Utilize a sintaxe cron para definir a renovação no horário de sua preferência.

00 00 */1 * * /usr/sbin/certbot-auto renew

Conclusão

Com o phpMyAdmin instalado e configurado com sucesso em seu sistema Debian, você pode gerenciar com eficiência seus bancos de dados MySQL ou MariaDB por meio de uma interface web amigável. Atualizações regulares e configurações de segurança garantem que sua ferramenta de gerenciamento de banco de dados permaneça segura e atualizada. Aproveite a conveniência e os recursos poderosos que o phpMyAdmin oferece para gerenciar seus bancos de dados no Debian.

Joshua James
Me siga
Últimos posts por Joshua James (exibir todos)

Deixe um comentário