# GRANT ALL PRIVILEGES no MariaDB: Atribuir direitos a usuários

O comando `GRANT ALL PRIVILEGES` no MariaDB concede todos os direitos de usuário sobre um banco de dados. Assim, usuários podem criar, modificar e excluir tabelas sem restrições.

## O que é o comando `GRANT ALL PRIVILEGES` no MariaDB?

O comando `GRANT ALL PRIVILEGES` no [MariaDB](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/banco-de-dados-mariadb/) atribui a uma usuária ou a um usuário direitos completos de acesso a um ou mais bancos de dados. Ele concede **todas as permissões disponíveis**, incluindo criar, alterar e excluir tabelas, além do acesso a funções administrativas. Com o uso direcionado do `GRANT ALL PRIVILEGES`, você controla os direitos de acesso dentro do seu ambiente de banco de dados.

Para usar o `GRANT ALL PRIVILEGES` no MariaDB, é necessário ter **privilégios avançados do sistema**. Normalmente, isso inclui o privilégio `SUPER` ou permissão para conceder direitos (`GRANT OPTION`). Faça login com uma conta administrativa e garanta uma conexão estável com a instância correta do banco de dados. Atente para definir com precisão o nome do usuário e o prefixo do host para evitar atribuições indevidas. Também é importante verificar se o banco de dados de destino já existe, pois o comando só pode ser aplicado a bancos de dados existentes.

## Sintaxe do comando `GRANT ALL PRIVILEGES` no MariaDB

A estrutura básica para conceder todos os direitos a um banco de dados no MariaDB é a seguinte:

```sql
GRANT ALL PRIVILEGES ON database.* TO 'username'@'host';
```

`GRANT ALL PRIVILEGES` no MariaDB concede à usuária ou ao usuário especificado permissões completas sobre o banco de dados selecionado. Ao indicar `'username'@'host'`, você define qual usuário e de qual host terá acesso ao banco de dados. Opcionalmente, é possível definir uma senha para autenticar a usuária ou o usuário.

Após executar o comando, na maioria dos casos as alterações só entram em vigor quando você recarrega os privilégios com:

```sql
FLUSH PRIVILEGES;
```

Isso garante que os direitos concedidos sejam ativados imediatamente e armazenados corretamente no sistema.

## Passo a passo: Como criar usuário e conceder permissões no MariaDB

Se você deseja criar uma conta de usuário no MariaDB e conceder a ela direitos completos, siga os passos abaixo:

### Passo 1: Criar usuário

Primeiro, crie um novo usuário com uma senha segura usando o comando:

```sql
CREATE USER 'newuser'@localhost IDENTIFIED BY 'strongpassword';
```

Com o comando [MariaDB CREATE USER](https://www.ionos.com/pt-br/digitalguide/hospedagem/tecnologia-de-hospedagem/mariadb-create-user/) você cria um usuário e define uma senha para ele. Substitua `newuser` pelo nome desejado e `strongpassword` por uma senha segura e personalizada. A indicação `localhost` limita o acesso a conexões do servidor local. Se quiser permitir acesso de outro host, substitua `localhost` pelo **endereço IP ou nome do host** desejado.

### Passo 2: Conceder todos os direitos sobre um banco de dados

O comando `GRANT ALL PRIVILEGES` no MariaDB concede ao usuário todos os privilégios disponíveis em todas as tabelas do banco `database_name`. O asterisco `*` indica todas as tabelas dentro do banco especificado.

```sql
GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@localhost;
```

### Passo 3: Permitir repassar privilégios com `GRANT OPTION`

Ao adicionar `WITH GRANT OPTION`, o usuário recebe permissão para repassar os privilégios concedidos a outros usuários.

```sql
GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@localhost WITH GRANT OPTION;
```

### Passo 4: Conceder privilégios específicos sobre um banco ou tabela

Você também pode conceder apenas determinados privilégios para um banco de dados completo ou para tabelas específicas. Por exemplo, para permitir somente acesso de leitura a todas as tabelas de um banco de dados, use:

```sql
GRANT SELECT ON database_name.* TO 'newuser'@localhost;
```

Neste exemplo, `'newuser'` recebe o direito de ler todos os dados no banco de dados `database_name`, mas sem poder fazer alterações. O uso de `*` após o nome do banco indica que os privilégios se aplicam a todas as tabelas desse banco.

Se quiser conceder privilégios apenas para uma tabela específica, ajuste a sintaxe da seguinte forma:

```sql
GRANT SELECT ON database_name.table_name TO 'newuser'@localhost;
```

Assim, `'newuser'` pode ler dados apenas da tabela `table_name` dentro do banco `database_name`. Isso permite um controle bem detalhado sobre as ações que o usuário pode realizar.

### Passo 5: Aplicar alterações

Os privilégios devem ser atualizados automaticamente e entrar em vigor imediatamente. Alternativamente, você pode executar o seguinte comando para garantir que todos os direitos concedidos sejam aplicados:

```sql
FLUSH PRIVILEGES;
```

### Passo 6: Exibir privilégios concedidos

Para verificar todos os privilégios atualmente atribuídos a uma conta de usuário, digite o seguinte comando:

```sql
SHOW GRANTS FOR 'newuser'@localhost;
```

Esse comando exibe todos os privilégios que `newuser` possui na instância do MariaDB. Além dos direitos gerais sobre bancos ou tabelas, também aparecem privilégios específicos como a permissão de repassar direitos a outros (`WITH GRANT OPTION`).


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/hospedagem/tecnologia-de-hospedagem/grant-all-privileges-no-mariadb/](https://www.ionos.com/pt-br/digitalguide/hospedagem/tecnologia-de-hospedagem/grant-all-privileges-no-mariadb/) for AI/LLM consumption.