# MySQL create user: Como criar usuário no MySQL

Para criar um novo usuário no [MySQL](https://www.ionos.com/digitalguide/server/know-how/what-is-mysql/ "O que é MySQL"), você precisará obter o devido acesso ao [banco de dados](https://www.ionos.com/digitalguide/hosting/technical-matters/databases/ "Banco de dados"), além de ter privilégios de administrador ou de superusuário. Somente assim será possível abrir e excluir contas, e gerenciar permissões. Ao criar um novo usuário, você também terá de definir os respectivos privilégios de acesso: de leitura, de gravação ou de direitos administrativos.

## Criar usuário no MySQL com o comando MySQL CREATE USER

Durante o processo de instalação do [sistema de gerenciamento de banco de dados](https://www.ionos.com/digitalguide/hosting/technical-matters/database-management-systems-dbms/ "DBMS: Sistema de gerenciamento de banco de dados"), o MySQL gera automaticamente uma **conta raíz**, também chamada de conta *root*. Ao utilizá-la, você terá controle total sobre o seu banco de dados, sobre as tabelas e sobre todos os usuários cadastrados, para um melhor gerenciamento.

Dica Se você precisa de ajuda para instalar e começar a mexer nesse banco de dados, acesse o [tutorial MySQL](https://www.ionos.com/digitalguide/server/know-how/learn-mysql-in-simple-steps/ "Aprenda MySQL em poucos passos") do nosso Digital Guide.

Ao acessar o seu sistema com a sua conta raíz, você conseguirá criar outras contas de usuário no MySQL, assim como atribuir a elas os devidos privilégios de acesso. É importante que você saiba que, em sistemas operacionais Ubuntu com o MySQL 5.7 ou uma versão mais recente, essaa conta raíz será configurada, por padrão, para ser autenticada pelo método de autenticação `auth_socket` e não por senha, como geralmente ocorre. Dessa forma, o nome do usuário que está tentando acessar o MySQL deverá corresponder ao nome do usuário do sistema operacional *host* no qual o MySQL está sendo executado. Ainda, você precisará fazer uso do comando `sudo` para conseguir se conectar à sua conta raíz, como mostra o exemplo:

```bash
$ sudo mysql
```

Para criar um novo usuário, você deverá utilizar o comando do MySQL `CREATE USER`, seguido de algumas especificações, como mostra o exemplo que se segue. As especificações permitirão a configuração de novos usuários com nome e senha próprios:

```bash
mysql> CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
```

Ao usar o comando MySQL `CREATE USER`, substitua `username` pelo nome de usuário que deseja configurar. Em seguida, especifique o nome do host de onde o novo usuário se conectará, fazendo a substituição do item `host`. Se o usuário só puder obter o devido acesso do [Ubuntu Server](https://www.ionos.com/digitalguide/server/configuration/ubuntu-server/ "Ubuntu Server") local, faça a substituição por `localhost.

Quando você estiver explorando as possibilidades de **métodos de autenticação**, se deparará com variadas opções: o `auth_socket`, por exemplo, oferece um alto nível de segurança, pois exige que seus usuários insiram uma senha para obterem acesso ao banco de dados. Por outro lado, ele impede conexões remotas, o que pode resultar em mais esforços de sua parte, caso você precise que programas externos interajam com o MySQL. Como alternativa, você pode omitir o trecho do comando `WITH authentication_plugin`, o que fará com que usuários possam se autenticar pelo método padrão do MySQL, `caching_sha2_password`. Se você preferir essa configuração, terá de usar o seguinte comando MySQL `CREATE USER`:

```bash
mysql&gt; CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
```

Depois de criar um novo usuário para o seu banco de dados, você deverá atribuir as devidas permissões a ele.

## Atribuir privilégios de usuário

Não basta que você crie um novo usuário no MySQL com o comando MySQL `CREATE USER`. Além desse, outros comandos devem ser usados para a configuração dos respectivos privilégios de acesso, passo de extrema importância para a segurança do seu banco de dados. Para atribuir as devidas permissões ao usuário criado, ou a qualquer outro usuário, utilize o comando abaixo:

```bash
mysql&gt; GRANT PRIVILEGE ON database.table TO 'username'@'host';
```

`PRIVILEGE` determina as ações que o usuário em questão poderá executar, tanto no banco de dados quanto nas tabelas especificadas. Explore outras funções dessa sintaxe, substituindo o valor por:

- `CREATE`: Permite que o respectivo usuário crie um banco de dados ou uma tabela.
- `SELECT`: Permite que um usuário recupere dados.
- `INSERT`: Permite que um usuário adicione novas entradas em tabelas.
- `UPDATE`: Permite que um usuário altere entradas existentes em tabelas.
- `DELETE`: Permite que um usuário exclua entradas em tabelas.
- `DROP`: Permite que um usuário exclua tabelas inteiras do banco de dados.

Para facilitar o trabalho, você também pode conceder vários privilégios a um novo usuário de uma só vez. Para isso, separe privilégios por vírgula, como mostra o exemplo a seguir:

```bash
mysql&gt; GRANT SELECT, INSERT, UPDATE ON database.table TO 'username'@'host';
```

Você também pode conceder **privilégios que abranjam todos os bancos de dados e tabelas** utilizando um único comando. Basta que você substitua os respectivos nomes de bancos de dados e de tabelas por `*`. Por exemplo, o comando abaixo concede, a um usuário, permissão para consultar dados (`SELECT`), permissão para adicionar novas entradas (`INSERT`) e permissão para modificar entradas existentes (`UPDATE`), em todos os bancos de dados e tabelas. Veja:

```bash
mysql&gt; GRANT SELECT, INSERT, UPDATE ON *.* TO 'username'@'host';
```

Após executar os comandos MySQL `CREATE USER` e MySQL `GRANT`, você poderá atualizar o banco de dados com o comando `FLUSH PRIVILEGES`. Ele recarregará todas as tabelas de permissões, garantindo que os novos privilégios entrem em vigor:

```bash
mysql&gt; FLUSH PRIVILEGES;
```

Considere conceder, aos usuários criados, somente as permissões que eles realmente precisam. Conferir controle total a um ou mais usuários representa um **alto risco de segurança**.

## Revogar privilégios de usuário

Para revogar permissões de acesso de um usuário do seu banco de dados, você deverá executar o comando `REVOKE`. A sintaxe dele é semelhante à do comando `GRANT`, mas, nesse caso, você terá de digitar `FROM` ao invés de `TO`:

```bash
mysql&gt; REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';
```

Para visualizar as permissões em vigor para um usuário, faça uso do comando `SHOW GRANTS`, como mostra o código:

```bash
mysql&gt; SHOW GRANTS FOR 'username'@'host';
```

Já para excluir um usuário do sistema, utilize o comando `DROP`:

```bash
mysql&gt; DROP USER 'username'@'localhost';
```

Antes de executar o comando `DROP`, contudo, tenha certeza do que você está fazendo, principalmente se o usuário a ser excluído se tratar de alguém com privilégios administrativos. A exclusão errônea de um usuário pode acarretar perdas acidentais de dados.

Depois de criar um novo usuário com o comando MySQL `CREATE USER`, configurar privilégios de acesso com o comando MySQL `GRANT` seguido dos respectivos valores, e administrar as permissões em vigor, você poderá encerrar o cliente MySQL da seguinte forma:

```bash
mysql&gt; exit
```


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/mysql-create-user/](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/mysql-create-user/) for AI/LLM consumption.