O phpMyAdmin é uma ferramenta de gerenciamento de banco de dados para MySQL, que vem com interface web.
Quer conhecer as funções mais úteis para interagir com os bancos de dados MySQL?
Este tutorial descreve como instalar o phpMyAdmin no Debian 10.
ÍNDICE DE CONTEÚDO
Pré-requisitos
Antes de começar a instalar o phpMyAdmin no Debian 10:
- Acesso a um servidor Debian 10
- Você deve ter uma conta de usuário não root no seu servidor com privilégios de sudo.
- Verifique se a pilha LAMP está instalada no servidor.
Além disso, existem importantes considerações de segurança ao usar software como phpMyAdmin, uma vez que:
- Comunica-se diretamente com a instalação do MariaDB
- Lida com autenticação usando credenciais MariaDB
- Executa e retorna resultados para consultas SQL arbitrárias
Por essas razões, e por ser um aplicativo PHP amplamente implantado que é frequentemente alvo de ataques, você nunca deve executar o phpMyAdmin em sistemas remotos por meio de uma conexão HTTP simples.
Se você não tem um domínio existente configurado com um certificado SSL / TLS, você pode seguir este tutorial sobre como proteger o Apache com Let’s Encrypt no Debian 10 para configurar um.
Isso exigirá que você registre um nome de domínio, crie registros DNS para o seu servidor e configure um Apache Virtual Host .
Depois de concluir essas etapas, você estará pronto para começar a ler este guia.
Etapa 1 – Instalando o phpMyAdmin e os pacotes recomendados
Antes de instalar e configurar o phpMyAdmin, a documentação oficial recomenda que você instale algumas extensões PHP em seu servidor para habilitar certas funcionalidades e melhorar o desempenho.
Se você seguiu o tutorial de pré-requisito da pilha LAMP , vários desses módulos terão sido instalados junto com o pacote php.
No entanto, é recomendável que você também instale estes pacotes:
- php-mbstring: uma extensão PHP usada para gerenciar strings não ASCII e converter strings para codificações diferentes
- php-zip: um módulo PHP que suporta o upload de .ziparquivos para phpMyAdmin
- php-gd: outro módulo PHP, este habilita suporte para a Biblioteca de Gráficos GD
Primeiro, atualize o índice de pacotes do seu servidor, caso não o tenha feito recentemente:
sudo apt update
Em seguida, use apt para puxar para baixo os arquivos e instalá-los em seu sistema:
sudo apt install php-mbstring php-zip php-gd
Em seguida, podemos instalar o phpMyAdmin. No momento em que este livro foi escrito, phpMyAdmin não estava disponível nos repositórios Debian padrão, então você precisará baixar o código-fonte para o seu servidor do site phpMyAdmin.
Para fazer isso, navegue até a página de downloads do phpMyAdmin , role para baixo até a tabela com links de download para a versão estável mais recente e copie o link de download que termina em tar.gz.
Este link aponta para um arquivo conhecido como tarball que, quando extraído, criará vários arquivos em seu sistema. No momento em que este artigo foi escrito, a versão mais recente é a 4.9.7.
Nota: nesta página de Downloads, você notará que existem links para download identificados como all-languages e english. Os links all-languages farão o download de uma versão do phpMyAdmin que permitirá que você selecione um dos 72 idiomas disponíveis, enquanto os links english só permitirão que você use o phpMyAdmin em inglês.
Este guia usará o pack all-languages para ilustrar como instalar o phpMyAdmin, mas se você planeja usar o phpMyAdmin em inglês, pode instalar o pack english. Apenas certifique-se de substituir os links e nomes de arquivo conforme necessário nos comandos a seguir.
Substitua o link no comando wget a seguir pelo link de download que você acabou de copiar e pressione ENTER. Isso executará o comando e baixará o tarball para o seu servidor:
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.7/phpMyAdmin-4.9.7-all-languages.tar.gz
Em seguida, extraia o tarball:
tar xvf phpMyAdmin-4.9.7-all-languages.tar.gz
Isso criará vários novos arquivos e diretórios em seu servidor em um diretório pai denominado .phpMyAdmin-4.9.7-all-languages.
Em seguida, execute o seguinte comando. Isso moverá o diretório phpMyAdmin-4.9.7-all-languages e todos os seus subdiretórios para o diretório /usr/share/, o local onde o phpMyAdmin espera encontrar seus arquivos de configuração por padrão.
Ele também renomeará o diretório phpmyadmin para apenas :
sudo mv phpMyAdmin-4.9.7-all-languages/ /usr/share/phpmyadmin
Com isso, você instalou o phpMyAdmin, mas há uma série de alterações de configuração que você deve fazer para poder acessar o phpMyAdmin através de um navegador da web.
Etapa 2 – Configurando o phpMyAdmin manualmente
Ao instalar o phpMyAdmin com um gerenciador de pacotes, como em um ambiente Ubuntu, o phpMyAdmin assume como padrão o modo “Configuração Zero” que executa várias ações automaticamente para configurar o programa.
Como o instalamos da fonte neste guia, precisaremos realizar essas etapas manualmente.
Para começar, crie um novo diretório onde phpMyAdmin armazenará seus arquivos temporários:
sudo mkdir -p /var/lib/phpmyadmin/tmp
Defina www-data – o perfil de usuário do Linux que servidores da web como o Apache usam por padrão para operações normais em sistemas Ubuntu e Debian – como o proprietário deste diretório:
sudo chown -R www-data:www-data /var/lib/phpmyadmin
Os arquivos extraídos anteriormente incluem um arquivo de configuração de amostra que pode ser usado como arquivo de configuração base.
Faça uma cópia deste arquivo, mantendo-o no diretório /usr/share/phpmyadmin, e renomeie-o config.inc.php:
sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
Abra este arquivo usando seu editor de texto preferido. Aqui, usaremos nano:
sudo nano /usr/share/phpmyadmin/config.inc.php
phpMyAdmin usa o método cookie de autenticação por padrão, que permite que você faça login no phpMyAdmin como qualquer usuário MariaDB válido com a ajuda de cookies .
Neste método, a senha do usuário MariaDB é armazenada e criptografada com o algoritmo Advanced Encryption Standard (AES) em um cookie temporário.
Historicamente, o phpMyAdmin em vez disso usava a cifra Blowfish para esse propósito, e isso ainda se reflete em seu arquivo de configuração. Role para baixo até a linha que começa com $cfg[‘blowfish_secret’]. Isso parecerá assim:
. . . $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ . . .
Entre as aspas simples, digite uma sequência de 32 caracteres aleatórios. Esta não é uma senha que você precisa lembrar, ela apenas será usada internamente pelo algoritmo AES:
. . . $cfg['blowfish_secret'] = 'STRINGOFTHIRTYTWORANDOMCHARACTERS'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ . . .
Nota: Se a frase secreta inserida aqui tiver menos de 32 caracteres, isso fará com que os cookies criptografados sejam menos seguros. Inserir uma string com mais de 32 caracteres, entretanto, não causará nenhum dano.
Para gerar uma sequência de caracteres verdadeiramente aleatória, você pode instalar e usar o programa pwgen:
sudo apt install pwgen
Por padrão, pwgen cria senhas facilmente pronunciáveis, embora menos seguras. No entanto, ao incluir o sinalizador -s, como no comando a seguir, você pode criar uma senha completamente aleatória e difícil de memorizar.
Observe os dois argumentos finais para este comando 32:, que determina quanto tempo a string de senha pwgen deve ser gerada; e 1 que informa pwgen quantas strings ele deve gerar:
pwgen -s 32 1
Em seguida, role para baixo até a leitura do comentário /* User used to manipulate with storage */. Esta seção inclui algumas diretivas que definem um usuário do banco de dados MariaDB chamado pma, que executa certas tarefas administrativas dentro do phpMyAdmin.
De acordo com a documentação oficial , esta conta de usuário especial não é necessária nos casos em que apenas um usuário acessará o phpMyAdmin, mas é recomendada em cenários multiusuário.
Remova o comentário das diretivas controluser e controlpass removendo as barras anteriores. Em seguida, atualize a diretiva controlpass para apontar para uma senha segura de sua escolha.
Se você não fizer isso, a senha padrão permanecerá em vigor e usuários desconhecidos podem facilmente obter acesso ao seu banco de dados através da interface do phpMyAdmin.
Depois de fazer essas alterações, esta seção do arquivo ficará assim:
. . .
/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'password';
. . .
Abaixo desta seção, você encontrará outra seção precedida por uma leitura de comentário /* Storage database and tables */.
Esta seção inclui várias diretivas que definem o armazenamento de configuração do phpMyAdmin , um banco de dados e várias tabelas usadas pelo usuário administrativo do banco de dados pma .
Essas tabelas habilitam vários recursos no phpMyAdmin, incluindo marcadores, comentários, geração de PDF e muito mais.
Remova o comentário de cada linha nesta seção, removendo as barras no início de cada linha para que fique assim:
. . . /* Storage database and tables */ $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; $cfg['Servers'][$i]['relation'] = 'pma__relation'; $cfg['Servers'][$i]['table_info'] = 'pma__table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma__column_info'; $cfg['Servers'][$i]['history'] = 'pma__history'; $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs'; $cfg['Servers'][$i]['tracking'] = 'pma__tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig'; $cfg['Servers'][$i]['recent'] = 'pma__recent'; $cfg['Servers'][$i]['favorite'] = 'pma__favorite'; $cfg['Servers'][$i]['users'] = 'pma__users'; $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups'; $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding'; $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches'; $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns'; $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings'; $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates'; . . .
Essas tabelas ainda não existem, mas iremos criá-las em breve.
Por último, role para baixo até o final do arquivo e adicione a seguinte linha. Isso configurará o phpMyAdmin para usar o diretório /var/lib/phpmyadmin/tmp que você criou anteriormente como seu diretório temporário.
O phpMyAdmin usará este diretório temporário como um cache de modelos que permite um carregamento mais rápido da página:
. . . $cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
Salve e feche o arquivo após adicionar esta linha. Se você usou nano, pode fazê-lo pressionando CTRL + X, Ye então ENTER.
Em seguida, você precisará criar o banco de dados e as tabelas de armazenamento phpMyAdmin. Quando você instalou o phpMyAdmin na etapa anterior, ele veio com um arquivo chamado create_tables.sql.
Este arquivo SQL contém todos os comandos necessários para criar o banco de dados de armazenamento de configuração e as tabelas de que o phpMyAdmin precisa para funcionar corretamente.
Execute o seguinte comando para usar o arquivo create_tables.sql para criar o banco de dados e as tabelas de armazenamento de configuração:
sudo mariadb < /usr/share/phpmyadmin/sql/create_tables.sql
Em seguida, você precisará criar o usuário administrativo pma . Abra o prompt do MariaDB:
sudo mariadb
No prompt, execute o seguinte comando para criar o usuário pma e conceder a ele as permissões apropriadas. Certifique-se de alterar password para alinhar com a senha que você definiu no arquivo config.inc.php:
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'password';
Se ainda não tiver criado um, você também deve criar um usuário comum MariaDB com o propósito de gerenciar bancos de dados através do phpMyAdmin, pois é recomendado que você faça o login usando outra conta que não o usuário pma .
Você pode criar um usuário com privilégios para todas as tabelas do banco de dados, bem como o poder de adicionar, alterar e remover privilégios de usuário, com este comando.
Quaisquer privilégios que você atribuir a este usuário, certifique-se de fornecer a ele uma senha forte também:
GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Em seguida, saia do shell MariaDB:
MariaDB [(none)]> exit
phpMyAdmin agora está totalmente instalado e configurado em seu servidor. No entanto, seu servidor Apache ainda não sabe como servir o aplicativo.
Para resolver isso, criaremos um arquivo de configuração do Apache para ele.
Etapa 3 – Configurando o Apache para atender ao phpMyAdmin
Ao instalar o phpMyAdmin a partir dos repositórios padrão, o processo de instalação cria um arquivo de configuração do Apache automaticamente e o coloca no diretório /etc/apache2/conf-enabled/.
Como instalamos o phpMyAdmin da fonte, no entanto, precisaremos criar e habilitar esse arquivo manualmente.
Crie um arquivo nomeado phpmyadmin.conf no diretório /etc/apache2/conf-available/:
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Em seguida, adicione o seguinte conteúdo ao 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> # 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/phpmyadmin/htpasswd.setup </IfModule> Require valid-user </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>
Este é o arquivo de configuração phpMyAdmin Apache padrão encontrado nas instalações do Ubuntu, embora também seja adequado para uma configuração do Debian.
Salve e feche o arquivo e ative-o digitando:
sudo a2enconf phpmyadmin.conf
Em seguida, recarregue o serviço apache2 para colocar as alterações na configuração em vigor:
sudo systemctl reload apache2
Em seguida, você poderá acessar a tela de login do phpMyAdmin navegando para o seguinte URL em seu navegador:
https://seu_dominio/phpmyadmin
Você verá a seguinte tela de login:
Faça login na interface com o nome de usuário e senha MariaDB que você configurou. Depois de fazer login, você verá a interface do usuário, que será semelhante a esta:
Agora que você pode se conectar e interagir com o phpMyAdmin, tudo o que resta a fazer é fortalecer a segurança do seu sistema para protegê-lo de invasores.
Etapa 4 – Protegendo sua instância phpMyAdmin
Por causa de sua onipresença, o phpMyAdmin é um alvo popular para invasores, e você deve tomar cuidado extra para evitar o acesso não autorizado.
Uma das maneiras mais fáceis de fazer isso é colocar um gateway na frente de todo o aplicativo usando as funcionalidades .htaccess de autenticação e autorização integradas do Apache .
Para fazer isso, você deve primeiro habilitar o uso de substituições de arquivo .htaccess editando seu arquivo de configuração do Apache.
Edite o arquivo vinculado que foi colocado no diretório de configuração do Apache:
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Adicione uma diretiva AllowOverride All no Diretorio /usr/share/phpmyadmin na seção do arquivo de configuração:
/etc/apache2/conf-available/phpmyadmin.conf
<Directory "/usr/share/phpmyadmin";>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
<IfModule mod_php5.c>
. . .
Depois de adicionar esta linha, salve e feche o arquivo.
Para implementar as mudanças que você fez, reinicie o Apache:
sudo systemctl restart apache2
Agora que você habilitou o .htaccess do seu aplicativo, você precisa criar um para realmente implementar alguma segurança.
Para que isso seja bem-sucedido, o arquivo deve ser criado no diretório do aplicativo. Você pode criar o arquivo necessário e abri-lo em seu editor de texto com privilégios de root, digitando:
sudo nano /usr/share/phpmyadmin/.htaccess
Dentro deste arquivo, insira o seguinte conteúdo:
AuthType Basic AuthName "Restricted Files" AuthUserFile /usr/share/phpmyadmin/.htpasswd Require valid-user
Aqui está o que cada uma dessas linhas significa:
- AuthType Basic: Esta linha especifica o tipo de autenticação que você está implementando. Este tipo implementará autenticação de senha usando um arquivo de senha.
- AuthName: Isso define a mensagem para a caixa de diálogo de autenticação. Você deve mantê-lo genérico para que usuários não autorizados não obtenham nenhuma informação sobre o que está sendo protegido.
- AuthUserFile: Isso define a localização do arquivo de senha que será usado para autenticação. Isso deve estar fora dos diretórios que estão sendo servidos. Criaremos este arquivo em breve.
- Require valid-user: Isso especifica que apenas usuários autenticados devem ter acesso a este recurso. Isso é o que realmente impede a entrada de usuários não autorizados.
Quando terminar, salve e feche o arquivo.
O local que você selecionou para o arquivo de senha foi /usr/share/phpmyadmin/.htpasswd. Agora você pode criar este arquivo e passá-lo a um usuário inicial com o utilitário htpasswd:
sudo htpasswd -c /usr/share/phpmyadmin/.htpasswd username
Você será solicitado a selecionar e confirmar uma senha para o usuário que está criando. Posteriormente, o arquivo é criado com a senha hash que você digitou.
Se quiser inserir um usuário adicional, você precisará fazer isso sem o sinalizador -c, assim:
sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
Agora, quando você acessar o subdiretório phpMyAdmin, será solicitado o nome da conta adicional e a senha que acabou de configurar:
https://seu_dominio_ou_IP/phpmyadmin
Após inserir a autenticação Apache, você será levado à página de autenticação normal do phpMyAdmin para inserir suas credenciais MariaDB.
Esta configuração adiciona uma camada adicional de segurança, o que é desejável, uma vez que o phpMyAdmin sofreu com vulnerabilidades no passado.
Conclusão
Agora você deve ter phpMyAdmin configurado e pronto para usar em seu servidor Debian 10.
Usando esta interface, você pode criar facilmente bancos de dados, usuários, tabelas, etc., e realizar as operações usuais, como excluir e modificar estruturas e dados.