Resolvendo o erro ‘mysql: unknown variable ‘ssl-mode=DISABLED”

Resolvendo o erro 'mysql: unknown variable 'ssl-mode=DISABLED''


Você já se deparou com a mensagem de erro mysql: unknown variable 'ssl-mode=DISABLED' ao tentar se conectar ao seu banco de dados MySQL? Esse problema é bastante comum e geralmente acontece por causa de uma incompatibilidade entre a versão do cliente MySQL que você está usando e a flag --ssl-mode.

Neste artigo, vamos explicar por que esse erro ocorre e, o mais importante, como resolvê-lo de forma simples.

Por que esse erro acontece?

O erro mysql: unknown variable 'ssl-mode=DISABLED' indica que o seu cliente MySQL não reconhece a flag --ssl-mode. Isso acontece, na maioria das vezes, por dois motivos:

  • Você está usando uma versão mais antiga do cliente MySQL.
  • Você está usando o MariaDB Client em vez do cliente oficial MySQL.

Embora o MariaDB seja um fork do MySQL, ele tem algumas diferenças. A flag --ssl-mode é uma delas e o MariaDB não a suporta diretamente.

Para confirmar qual cliente você está usando, basta rodar o seguinte comando no seu terminal:

Bash

mysql --version

Se a resposta mostrar “MariaDB” em vez de “MySQL”, você encontrou o motivo do problema.


Soluções para o problema

Agora que você sabe a causa, vamos às soluções. Temos três opções principais, dependendo da sua necessidade e ambiente.

1. Mude a flag do comando (a solução mais rápida)

Se você não quer instalar outro cliente, a solução mais fácil é usar a flag --ssl=0 que é equivalente a --ssl-mode=DISABLED no cliente MariaDB.

Basta alterar seu comando de conexão:

Bash

mysql -h 127.0.0.1 -P 3306 -u root -p --ssl=0

Essa opção é ideal para quem precisa de uma correção rápida sem fazer grandes alterações no sistema.

2. Instale o cliente oficial MySQL (para usar a flag –ssl-mode)

Se você prefere usar a flag --ssl-mode=DISABLED, a melhor opção é remover o cliente do MariaDB e instalar o cliente oficial do MySQL.

Para isso, use os seguintes comandos:

Bash

sudo apt remove mariadb-client -y
sudo apt install mysql-client -y

Depois de instalar, o comando original com --ssl-mode vai funcionar perfeitamente.

Bash

mysql -h 127.0.0.1 -P 3306 -u root -p --ssl-mode=DISABLED

3. Ajuste a sua aplicação (ex: Laravel)

Se o erro está acontecendo na sua aplicação (como em um projeto Laravel), você não precisa mudar o cliente no seu sistema. Basta ajustar o arquivo de configuração da aplicação para desabilitar o SSL.

No seu arquivo .env, você pode adicionar a seguinte linha para forçar a conexão sem SSL:

DB_CONNECTION=mysql
DB_HOST=host.docker.internal
DB_PORT=3306
DB_DATABASE=meubanco
DB_USERNAME=root
DB_PASSWORD=senha
DB_OPTIONS='--ssl=0'

Se o driver que você está usando é o PDO, a configuração pode ser um pouco diferente:

DB_CONNECTION=mysql
DB_HOST=host.docker.internal
DB_PORT=3306
DB_DATABASE=meubanco
DB_USERNAME=root
DB_PASSWORD=senha
DB_ATTR_SSL_CA=null

Resumo

  • Se você está usando o MariaDB Client, use a flag --ssl=0 no seu comando.
  • Se você quer usar a flag --ssl-mode, instale o cliente oficial do MySQL.
  • Se o problema é na sua aplicação, ajuste o arquivo .env para desabilitar o SSL na string de conexão.

Com essas dicas, você poderá resolver o erro e continuar seu trabalho sem mais dores de cabeça. Qual dessas soluções funcionou para você? Deixe um comentário abaixo!