Pesquisa de site

Instale o phpMyAdmin com Apache (LAMP) no Debian 10 Buster


Este tutorial mostrará como instalar o phpMyAdmin com Apache, MariaDB, PHP7.3 (pilha LAMP) no Debian 10 Buster. phpMyAdmin é uma ferramenta de gerenciamento de banco de dados baseada na web, gratuita e de código aberto, escrita em PHP. Ele fornece uma interface gráfica da web para os usuários gerenciarem bancos de dados MySQL ou MariaDB. Também aprenderemos como habilitar a autenticação de dois fatores no phpMyAdmin.

phpMyAdmin permite que os administradores:

  • navegar em bancos de dados e tabelas;
  • criar, copiar, renomear, alterar e eliminar bancos de dados;
  • criar, copiar, renomear, alterar e eliminar tabelas;
  • realizar manutenção de mesa;
  • adicionar, editar e eliminar campos;
  • execute qualquer instrução SQL, até mesmo consultas múltiplas;
  • criar, alterar e eliminar índices;
  • carregar arquivos de texto em tabelas;
  • criar e ler dumps de tabelas ou bancos de dados;
  • exportar dados para os formatos SQL, CSV, XML, Word, Excel, PDF e LaTeX;
  • administrar vários servidores;
  • gerenciar usuários e privilégios do MySQL;
  • verifique as configurações do servidor e as informações de tempo de execução com dicas de configuração;
  • verificar integridade referencial em tabelas MyISAM;
  • crie consultas complexas usando consulta por exemplo (QBE), automaticamente
  • conectando tabelas necessárias;
  • criar gráficos em PDF do layout do banco de dados;
  • pesquisar globalmente em um banco de dados ou em um subconjunto dele;
  • transformar dados armazenados em qualquer formato usando um conjunto de funções predefinidas, como exibir dados BLOB como imagem ou link para download;
  • gerenciar tabelas InnoDB e chaves estrangeiras;

Pré-requisitos

Para seguir este tutorial, você precisa de um sistema operacional Debian 10 rodando em seu computador local ou em um servidor remoto.

Se você estiver procurando por um VPS (servidor virtual privado), poderá criar uma conta no Vultr através do meu link de indicação para obter crédito grátis de $50 (somente para novos usuários). E se você precisar configurar o phpMyAdmin com um nome de domínio, recomendo comprar nomes de domínio do NameCheap porque o preço é baixo e eles oferecem proteção de privacidade whois gratuitamente.

Presume-se que você já instalou a pilha LAMP no Debian 10. Caso contrário, verifique o tutorial a seguir.

  • Como instalar a pilha LAMP (Apache, MariaDB, PHP7.3) no Debian 10 Buster

Observe que você precisa ter privilégios de root ao instalar software no Debian. Você pode adicionar sudo no início de um comando ou usar o comando su - para mudar para o usuário root.

Com isso resolvido, vamos começar a instalar o phpMyAdmin.

Etapa 1: Baixe o phpMyAdmin no servidor Debian 10

O phpMyAdmin não está incluído no repositório de software Debian 10, então temos que baixar o software manualmente. Vá para a página de download do phpMyAdmin para verificar a versão estável mais recente. Em seguida, execute o seguinte comando para baixá-lo.

wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip

Dica: você sempre pode usar o formato de URL acima para baixar a versão estável mais recente do phpMyAdmin. Basta substituir 4.9.0.1 pelo número da versão mais recente.

Em seguida, extraia-o.

sudo apt install unzip

unzip phpMyAdmin-4.9.0.1-all-languages.zip

Mova o phpMyadmin 4.9 para o diretório /usr/share/.

sudo mv phpMyAdmin-4.9.0.1-all-languages /usr/share/phpmyadmin

Em seguida, torne o usuário do servidor web (www-data) o proprietário deste diretório.

sudo chown -R www-data:www-data /usr/share/phpmyadmin

Etapa 2: Crie um banco de dados MariaDB e um usuário para phpMyAdmin

Agora precisamos fazer login no console MariaDB e criar um banco de dados e usuário para phpMyAdmin. Por padrão, o pacote MaraiDB no Debian usa unix_socket para autenticar o login do usuário, o que basicamente significa que você pode usar o nome de usuário e a senha do sistema operacional para fazer login no console MariaDB. Portanto, você pode executar o seguinte comando para fazer login sem fornecer a senha de root do MariaDB.

sudo mysql -u root

A seguir, crie um novo banco de dados para phpMyAdmin usando o seguinte comando SQL. Este tutorial o chama de phpmyadmin, você pode usar qualquer nome que desejar para o banco de dados.

CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

O seguinte comando SQL criará o usuário do banco de dados phpmyadmin e definirá uma senha, e ao mesmo tempo concederá todas as permissões do novo banco de dados ao novo usuário para que mais tarde o phpMyAdmin possa gravar no banco de dados. Substitua os textos em vermelho pela sua senha preferida.

GRANT ALL ON phpmyadmin.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY 'your_preferred_password';

Libere a tabela de privilégios e saia do console MariaDB.

FLUSH PRIVILEGES;

EXIT;

Etapa 3: Instale os módulos PHP necessários e recomendados.

Execute o seguinte comando para instalar os módulos PHP exigidos ou recomendados pelo phpMyAdmin.

sudo apt install php-imagick php-phpseclib php-php-gettext php7.3-common php7.3-mysql php7.3-gd php7.3-imap php7.3-json php7.3-curl php7.3-zip php7.3-xml php7.3-mbstring php7.3-bz2 php7.3-intl php7.3-gmp

Em seguida, reinicie o Apache.

sudo systemctl restart apache2

Etapa 4: Criar configuração Apache para phpMyAdmin

Se você deseja acessar a interface web do phpMyAdmin a partir de um subdiretório, crie um snippet de configuração com o seguinte comando.

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Cole o seguinte texto no arquivo.

# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php

    <IfModule mod_php5.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>
    <IfModule mod_php.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>

</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>

Salve e feche o arquivo. Em seguida, habilite este snippet de configuração.

sudo a2enconf phpmyadmin.conf

Também precisamos criar a pasta temporária do phpMyAdmin.

sudo mkdir -p /var/lib/phpmyadmin/tmp
sudo chown www-data:www-data /var/lib/phpmyadmin/tmp

Recarregue o Apache para que as alterações tenham efeito.

sudo systemctl reload apache2

Agora você pode acessar a interface web do phpMyAdmin em

your-server-ip/phpmyadmin

Se o phpMyAdmin estiver instalado em seu computador Debian local, você poderá acessar a interface web do phpMyAdmin digitando o seguinte texto na barra de endereço do navegador.

localhost/phpmyadmin

Se a conexão for recusada ou não for concluída, poderá haver um firewall impedindo solicitações HTTP. Se você estiver usando o firewall iptables, será necessário executar o seguinte comando para abrir as portas TCP 80 e 443.

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT

Se você estiver usando o firewall UFW, execute este comando para abrir as portas TCP 80 e 443.

sudo ufw allow http
sudo ufw allow https

Etapa 5: acesse o phpMyAdmin de um subdomínio

Às vezes, você pode querer usar um subdomínio para acessar a interface web do phpMyAdmin. Dessa forma, você pode ativar o HTTPS para criptografar o tráfego.

Primeiro, precisamos criar um host virtual Apache para phpMyAdmin. O snippet de configuração existente do phpMyAdmin pode ser usado como modelo. Vamos copiá-lo para um novo arquivo.

sudo cp /etc/apache2/conf-enabled/phpmyadmin.conf /etc/apache2/sites-available/phpmyadmin.conf

Em seguida, edite o novo arquivo com um editor de texto de linha de comando, como o Nano.

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

Adicione as seguintes linhas no início deste arquivo. Substitua pma.example.com pelo seu subdomínio preferido para phpMyAdmin. Não se esqueça de criar um registro DNS A para este subdomínio.

<VirtualHost *:80>
    ServerName pma.example.com
    DocumentRoot /usr/share/phpmyadmin

    ErrorLog ${APACHE_LOG_DIR}/pma.error.log
    CustomLog ${APACHE_LOG_DIR}/pma.access.log combined

Adicione a seguinte linha no final deste arquivo.

</VirtualHost>

Salve e feche o arquivo. (Para salvar um arquivo no editor de texto Nano, pressione Ctrl+O e pressione Enter para confirmar. Para sair, pressione Ctrl+X.) Em seguida, habilite este host virtual.

sudo a2ensite phpmyadmin.conf

Recarregue o servidor web Apache para que esta alteração tenha efeito.

sudo systemctl reload apache2

Agora você deve conseguir acessar a interface web do phpMyAdmin via

pma.example.com

Antes de inserir as credenciais do usuário no formulário de login, vamos habilitar o HTTPS.

Etapa 6: Habilite HTTPS no phpMyAdmin com Apache

Para proteger a interface web do phpMyadmin, podemos instalar um certificado Let’s Encrypt TLS gratuito. Execute o seguinte comando para instalar o cliente Let’s Encrypt (certbot) do repositório de software Debian 10.

sudo apt install certbot python3-certbot-apache

Python3-certbot-apache é o plugin Apache para Certbot. Agora execute o seguinte comando para obter e instalar o certificado TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email [email 

Explicação:

  • –apache: Use o autenticador e instalador Apache
  • –agree-tos: concorda com os termos de serviço do Let’s Encrypt
  • –redirect: adiciona redirecionamento 301.
  • –hsts: adicione o cabeçalho Strict-Transport-Security a cada resposta HTTP.
  • –staple-ocsp: Ativa o grampeamento OCSP.
  • –must-staple: Adiciona a extensão OCSP Must Staple ao certificado.
  • O sinalizador -d é seguido por uma lista de nomes de domínio, separados por vírgula. Você pode adicionar até 100 nomes de domínio.
  • –email: E-mail utilizado para cadastro e contato de recuperação.

Você será perguntado se deseja receber e-mails da EFF (Electronic Frontier Foundation). Após escolher S ou N, seu certificado TLS será automaticamente obtido e configurado para você, o que é indicado pela mensagem abaixo.

Etapa 7: execute o script de configuração do phpMyAdmin

Digite o seguinte na barra de endereço do seu navegador.

your-server-ip/phpmyadmin/setup

ou

pma.example.com/setup

Clique no botão Novo Servidor para configurar um servidor.

Em seguida, basta clicar no botão Aplicar.

Em seguida, clique no botão Exibir para mostrar o arquivo de configuração.

No diretório /usr/share/phpmyadmin/, crie o arquivo config.inc.php.

sudo nano /usr/share/phpmyadmin/config.inc.php

Copie o conteúdo de config.inc.php da página de configuração do phpMyAdmin e cole-o no arquivo /usr/share/phpmyadmin/config.inc.php.

Etapa 8: solucionar erro de login do phpMyAdmin

Agora, se você tentar fazer login no phpMyAdmin com a conta root MariaDB, poderá ver o seguinte erro.

#1698 - Access denied for user 'root '@'localhost'

e

mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost'

Se você fizer login com o usuário phpmyadmin, não verá o erro acima. Entretanto, o usuário phpmyadmin só pode ser usado para gerenciar o banco de dados phpmyadmin. A causa do erro é que por padrão o usuário root do MariDB é autenticado através do plugin unix_socket, em vez de usar o plugin mysql_native_password. Para resolver este problema, podemos criar outro usuário administrador e conceder todos os privilégios ao novo usuário administrador.

Faça login no servidor MariaDB a partir da linha de comando.

sudo mysql -u root

Crie um usuário administrador com autenticação por senha.

create user admin@localhost identified by 'your-preferred-password';

Conceda todos os privilégios em todos os bancos de dados.

grant all privileges on *.* to admin@localhost with grant option;

Liberar privilégios e sair;

flush privileges;

exit;

Agora você pode entrar no phpMyAmin com a conta admin e gerenciar todos os bancos de dados.

Etapa 9: configurar o armazenamento de configuração do phpMyAdmin

Agora, no painel de controle do phpMyAdmin, você pode ver uma mensagem de aviso.

The phpMyAdmin configuration storage is not completely configured, some extended features have been deactivated. Find out why. 
Or alternately go to 'Operations' tab of any database to set it up there.

Clique no link Descubra o porquê. Em seguida, clique no link Criar para criar tabelas no banco de dados phpmyadmin.

Etapa 10: Restringindo o acesso ao diretório /setup

Para restringir o acesso ao diretório /setup, podemos habilitar a autenticação básica por senha com o servidor web Apache. Execute o seguinte comando para definir uma senha para o usuário admin. O arquivo /etc/apache2/htpasswd é usado para armazenar nomes de usuários e senhas.

sudo htpasswd -c /etc/apache2/htpasswd admin

Em seguida, edite o arquivo de configuração do Apache para phpMyAdmin

sudo nano /etc/apache2/sites-available/phpmyadmin-le-ssl.conf

ou

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Adicione as seguintes linhas.

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authz_core.c>
        <IfModule mod_authn_file.c>
            AuthType Basic
            AuthName "phpMyAdmin Setup"
            AuthUserFile /etc/apache2/htpasswd
        </IfModule>
        Require valid-user
    </IfModule>
</Directory>

Salve e feche o arquivo. Em seguida, recarregue o Apache para que as alterações tenham efeito.

sudo systemctl reload apache2

Se você acessar o script de configuração do phpMyAdmin novamente, será solicitado que você insira o nome de usuário e a senha.

Habilite a autenticação de dois fatores

Você também pode fortalecer o phpMyAdmin habilitando a autenticação de dois fatores, que é um recurso adicionado na versão 4.8. Para habilitá-lo, faça login no phpMyAdmin. Em seguida, vá para Configurações -> Autenticação de dois fatores e selecione Aplicativo de autenticação (2FA).

Depois de clicar no botão Configurar autenticação de dois fatores, será apresentado um código QR, que você precisa digitalizar com um aplicativo de autenticação de dois fatores em seu telefone.

O Google Authenticator é um aplicativo 2FA popular, mas eu recomendo o FreeOTP, que é um aplicativo 2FA de código aberto desenvolvido pela Red Hat. Depois de inserir o código de autenticação gerado pelo seu aplicativo 2FA, a autenticação de dois fatores será habilitada. Se você sair e fazer login novamente, precisará inserir o código de autenticação, além do nome de usuário e da senha.

Empacotando

Espero que este tutorial tenha ajudado você a instalar o phpMyAdmin com LAMP no Debian 10 Buster. Você também pode seguir o feed RSS do anúncio de segurança do phpMyAdmin. Como sempre, se você achou esta postagem útil, assine nosso boletim informativo gratuito para obter mais dicas e truques. Se cuide 🙂

Artigos relacionados