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 🙂