Instalar MariaDB e phpMyAdmin no Debian 13 para Laravel
verificado a 2 Setembro 2026 · 4 min
sudo apt install mariadb-server, depois sudo mariadb-secure-installation (o antigo mysql_secure_installation já não existe). Cria uma base em utf8mb4 e um utilizador dedicado limitado a essa base, nunca a conta de administração. Do lado do Laravel, DB_CONNECTION=mysql serve também para MariaDB.
O Laravel precisa de uma base de dados. No Debian, MariaDB é a escolha por omissão: é o pacote fornecido pela distribuição e funciona com o driver MySQL do Laravel. O phpMyAdmin vem a seguir, se quiseres uma interface web para espreitar as tuas tabelas.
Este capítulo faz parte da instalação do Laravel no Debian, dentro do percurso Desenvolvimento web. Passos executados em Debian 13 «trixie» com MariaDB 11.8.6 e Laravel 13.30.1, a 2 de setembro de 2026.
Instalar o MariaDB
sudo apt update
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb
mariadb --versionmariadb from 11.8.6-MariaDB, client 15.2 for debian-linux-gnuA conta de administração fica acessível a partir da shell root da máquina, sem palavra-passe. Isso não quer dizer que a instalação esteja segura: quer dizer que a segurança assenta inteiramente no acesso ao servidor.
Proteger a instalação
O Debian 13 fornece a ferramenta com o nome MariaDB. O antigo mysql_secure_installation já não existe:
sudo mariadb-secure-installationO script faz uma série de perguntas. Responde assim:
| Pergunta | Resposta | Porquê |
|---|---|---|
| Switch to unix_socket authentication | sim | o administrador autentica-se pela conta de sistema, não por uma palavra-passe guardada |
| Change the root password | à escolha | desnecessário se ativaste o unix_socket |
| Remove anonymous users | sim | permitem uma ligação sem credenciais |
| Disallow root login remotely | sim | a administração faz-se por SSH, não pela porta 3306 |
| Remove test database | sim | base aberta a escrita por toda a gente |
| Reload privilege tables | sim | aplica as alterações de imediato |
Criar a base e o utilizador da aplicação
Nunca ponhas a aplicação a correr com a conta de administração. Cria uma base e uma conta dedicadas:
sudo mariadbCREATE DATABASE laravel
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
CREATE USER 'laravel'@'localhost' IDENTIFIED BY 'un_mot_de_passe_long';
GRANT ALL PRIVILEGES ON laravel.* TO 'laravel'@'localhost';
FLUSH PRIVILEGES;Há dois pontos a reter. O conjunto de caracteres utf8mb4 não é decorativo: é o único que guarda o Unicode todo, emojis incluídos. E o privilégio está limitado a laravel.*, não a *.*: se a aplicação for comprometida, as outras bases ficam fora de alcance.
Confirma o resultado:
SHOW GRANTS FOR 'laravel'@'localhost';GRANT USAGE ON *.* TO `laravel`@`localhost` IDENTIFIED BY PASSWORD '*1F48A8…'
GRANT ALL PRIVILEGES ON `laravel`.* TO `laravel`@`localhost`Ligar o Laravel
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=un_mot_de_passe_longDB_CONNECTION=mysql serve também para MariaDB: o Laravel usa o mesmo driver PDO. Limpa a cache de configuração e corre as migrações:
php artisan config:clear
php artisan migrate --force INFO Running migrations.
0001_01_01_000000_create_users_table ......................... 136.15ms DONE
0001_01_01_000001_create_cache_table .......................... 65.58ms DONE
0001_01_01_000002_create_jobs_table .......................... 117.52ms DONEMigrações que passam são a prova de que a ligação, as permissões e o conjunto de caracteres estão certos.
Um erro «could not find driver» não vem do MariaDB mas do PHP: falta o php-mysql. Verifica com php -r 'echo implode(", ", PDO::getAvailableDrivers());', como explicado no capítulo sobre o PHP e as suas extensões, que deve mostrar mysql. O pacote php-mysqli não chega, porque o Laravel passa por PDO.
phpMyAdmin, e se vale a pena instalá-lo
O phpMyAdmin voltou ao Debian 13, na versão 5.2.2:
sudo apt install -y phpmyadminO assistente propõe configurar o servidor web, o Apache no caso mais habitual, e cria a sua própria base de configuração. Numa instalação Apache, a interface passa a ser servida em /phpmyadmin.
O endereço /phpmyadmin é varrido sem descanso. Se o instalares num servidor público, limita o acesso por endereço IP ou por autenticação HTTP, ou não o exponhas de todo: um túnel SSH deixa-te lá chegar a partir do teu posto sem o abrir ao mundo.
# túnel SSH: o phpMyAdmin fica no loopback do servidor
ssh -L 8080:127.0.0.1:80 deploy@exemple.com
# depois http://127.0.0.1:8080/phpmyadmin a partir do teu navegadorPara o dia a dia, a linha de comandos chega e evita a questão por completo:
sudo mariadb laravel -e "SHOW TABLES;"
php artisan db:show
php artisan db:table users
php artisan tinkerO php artisan db:show mostra as tabelas, o seu tamanho e o número de linhas sem sair do terminal. Muitas vezes é tudo o que é preciso.
Fazer cópias de segurança
Uma base sem cópia de segurança não é uma base de produção. O comando mínimo:
sudo mariadb-dump --single-transaction laravel | gzip > /var/sauvegardes/laravel-$(date +%F).sql.gzO --single-transaction evita bloquear as tabelas InnoDB durante a exportação, o que permite guardar a base sem interromper o serviço. Mete esta linha numa tarefa agendada e confirma de vez em quando que um restauro funciona mesmo: uma cópia que nunca foi restaurada é uma hipótese, não uma garantia.
Erros frequentes
mariadb-secure-installation.laravel.*.php-mysql. O php-mysqli não chega, porque o Laravel passa por PDO.