Como instalar o MySQL ou o MariaDB e o phpMyAdmin no Ubuntu 24.04 e 22.04, criar um usuário para o login e proteger o acesso ao painel.
O phpMyAdmin é a interface web para administrar bancos de dados MySQL e MariaDB pelo navegador. Ele roda em cima do Apache com PHP, então a ordem é: servidor web, banco de dados e, por último, o phpMyAdmin. O artigo antigo usava pacotes do PHP 5 e copiava o phpMyAdmin para /var/www; não faça isso, porque a cópia nunca mais recebe atualização de segurança.
Antes de começar
- Apache e PHP instalados (veja como instalar o Apache no Ubuntu).
- Usuário com
sudono servidor. - Escolha um banco: MySQL ou MariaDB. Os dois não convivem no mesmo servidor.
| Sistema | MySQL (pacote mysql-server) | MariaDB (pacote mariadb-server) |
|---|---|---|
| Ubuntu 24.04 | 8.0 | 10.11 |
| Ubuntu 22.04 | 8.0 | 10.6 |
| Debian 12 | não está no repositório oficial | 10.11 |
Passo 1: instale o MySQL ou o MariaDB
MySQL:
sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation
MariaDB:
sudo apt update
sudo apt install mariadb-server
sudo mariadb-secure-installation
O script de segurança remove o usuário anônimo, o banco de teste e o login remoto do root. Responda y a essas perguntas. No MariaDB, tecle Enter quando ele pedir a senha atual do root e responda n às perguntas de trocar para unix_socket e de mudar a senha do root. No Ubuntu, o root do banco entra pela autenticação do próprio sistema (auth_socket no MySQL, unix_socket no MariaDB): basta ser root no Linux para entrar, sem senha. Por isso o script do MySQL pode avisar que vai pular a definição de senha do root. Está correto, e é mais seguro assim.
Para entrar no banco pelo terminal:
sudo mysql # MySQL
sudo mariadb # MariaDB
Passo 2: crie um usuário para usar no phpMyAdmin
Como o root não usa senha, ele não consegue entrar pelo phpMyAdmin. Crie um usuário administrador próprio, dentro do sudo mysql (ou sudo mariadb), trocando a senha de exemplo:
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'TroqueEstaSenha#2026';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
EXIT;
Para cada site, o ideal é um usuário que só enxergue o próprio banco:
CREATE DATABASE meusite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'meusite'@'localhost' IDENTIFIED BY 'OutraSenhaForte#2026';
GRANT ALL PRIVILEGES ON meusite.* TO 'meusite'@'localhost';
Passo 3: instale o phpMyAdmin
sudo apt install phpmyadmin
- Escolha o servidor web. Na tela Web server to reconfigure automatically, marque
apache2com a barra de espaço (aparece um asterisco) e só então tecle Enter. Esquecer o espaço é o erro mais comum desta instalação. - Configure o banco do phpMyAdmin. Em Configure database for phpmyadmin with dbconfig-common? responda Yes e defina uma senha forte para o usuário interno do phpMyAdmin.
- Acesse pelo navegador. Abra
http://203.0.113.10/phpmyadmin(troque pelo IP do servidor) e entre com o usuárioadmincriado no passo 2.
Passo 4: proteja o phpMyAdmin
O endereço /phpmyadmin é um dos mais varridos por robôs na internet. Escolha uma destas proteções:
- Liberar só o seu IP. Edite
/etc/phpmyadmin/apache.confe, dentro do bloco<Directory /usr/share/phpmyadmin>, acrescente a linha abaixo (se já houver umRequire all grantednesse bloco, troque-o por ela). Depois rodesudo systemctl reload apache2.Require ip 203.0.113.50 - Acessar só por túnel SSH. Use
Require localno lugar do IP e, no seu computador, abra o túnel. Depois acessehttp://localhost:8080/phpmyadmin:ssh -L 8080:127.0.0.1:80 [email protected]
Problemas comuns
#1698 - Access denied for user 'root'@'localhost'
O root do banco usa autenticação pelo sistema e não entra por senha no phpMyAdmin. Use o usuário admin do passo 2.
ERROR 1819: Your password does not satisfy the current policy requirements
O componente de validação de senha do MySQL está ativo e recusou a senha. Use uma senha com maiúsculas, minúsculas, números e símbolo. Se o erro aparecer durante a instalação do phpMyAdmin, escolha retry e informe uma senha que atenda à política, ou rode sudo dpkg-reconfigure phpmyadmin depois.
Not Found ao abrir /phpmyadmin
O phpMyAdmin não foi ligado ao Apache (o apache2 não foi marcado com espaço). Corrija com:
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin
sudo systemctl reload apache2
Erro ao importar arquivo grande
O limite de upload do PHP é baixo por padrão. Veja como contornar em importar banco pelo phpMyAdmin.