# Criar utilizador no MYSQL com CREATE USER

Para criar um novo utilizador no MySQL, é necessário ter acesso à base de dados. Além disso, também é necessário ter privilégios de utilizador root, com os quais é possível criar contas de utilizador e gerir as permissões atribuídas. Da mesma forma, é importante saber que tipo de permissão será concedida ao novo utilizador: permissões de leitura, permissões de escrita ou até mesmo permissões de administrador.

## Criar um utilizador com MySQL

Ao instalar o sistema gestor de bases de dados, o MySQL cria uma conta **root** com controlo total sobre as bases de dados, tabelas e utilizadores. Se precisar de ajuda com a instalação, encontrará todas as informações importantes no seguinte guia para aprender a utilizar o MySQL.

Com uma conta root, pode criar novas contas de utilizador MySQL e atribuir-lhes uma série de permissões. É importante saber que nos sistemas Ubuntu com MySQL 5.7 e versões posteriores, a autenticação do utilizador root não é feita com senha, mas com o plugin `auth_socket`. Para que a autenticação seja realizada com sucesso, o nome do utilizador do sistema que deseja usar o cliente MySQL deve coincidir com o nome do utilizador MySQL especificado no comando. Ou seja, para poder aceder à conta root, é importante antepor o comando `sudo`:

```bash
$ sudo mysql
```

Para criar um novo utilizador no MySQL, utilize o comando `CREATE USER`, com o qual poderá criar um utilizador com um nome de utilizador e uma palavra-passe específicos:

```bash
mysql> CREATE USER 'nombreusuario'@'host' IDENTIFIED WITH authentication_plugin BY 'contraseña';
```

Substitua «nombreusuario» por um nome de utilizador à sua escolha. Em seguida, introduza em `host` o nome do host a partir do qual o novo utilizador se irá ligar. Se o utilizador só puder aceder a partir do seu servidor Ubuntu local, pode introduzir `localhost`.

Existem várias opções disponíveis de **plug-ins de autenticação**. Embora o plug-in `auth_socket` ofereça um alto nível de segurança, já que os utilizadores devem introduzir uma senha para acessar o banco de dados, ele também impede conexões remotas. Isso pode resultar em um esforço maior quando programas externos precisam interagir com o MySQL. Como alternativa, pode omitir a parte do comando `WITH authentication_plugin` para que o utilizador realize a autenticação com o plugin padrão do MySQL `caching_sha2_password`. O comando, neste caso, é mostrado a seguir:

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

Depois de criar um novo utilizador, é hora de atribuir uma série de permissões a ele.

## Atribuir permissões de utilizador com MySQL create user

Para garantir a segurança dos dados no MySQL, é muito importante criar e gerir permissões de utilizador. O comando para atribuir permissões de utilizador é:

```bash
mysql> GRANT PRIVILEGE ON database.table TO 'nombreusuario'@'host';
```

O valor `PRIVILEGE` determina quais privilégios o utilizador tem na base de dados e tabela especificadas. Pode substituir este valor pelos seguintes comandos, entre outros:

- `CREATE`: permite aos utilizadores criar uma base de dados ou tabela.
- `SELECT`: permite aos utilizadores aceder aos dados.
- `INSERT`: permite aos utilizadores adicionar novas entradas às tabelas.
- `UPDATE`: permite aos utilizadores alterar entradas existentes nas tabelas.
- `DEELETE`: permite aos utilizadores eliminar entradas da tabela.
- `DROP`: permite aos utilizadores eliminar tabelas completas da base de dados.

Você também pode conceder vários privilégios de uma só vez aos novos utilizadores. Use o mesmo comando, mas separe cada privilégio com uma vírgula:

```bash
mysql> GRANT SELECT, INSERT, UPDATE ON database.table TO 'nombre_usuario'@'host';
```

Se desejar, **pode conceder os privilégios estipulados para todas as bases de dados ou tabelas** num único comando. Basta introduzir `*` em vez dos nomes da base de dados e das tabelas. No comando seguinte, por exemplo, um utilizador é autorizado a consultar dados em todas as bases de dados e tabelas com `SELECT`, bem como a adicionar novas entradas com `INSERT` e a modificar entradas existentes com `UPDATE`.

```bash
mysql> GRANT SELECT, INSERT, UPDATE ON *.* TO nombredeusuario@'host';
```

Depois de executar no MySQL `CREATE USER` ou `GRANT`, pode utilizar o comando `FLUSH PRIVILEGES` para atualizar a base de dados e atualizar as tabelas de privilégios. Desta forma, as novas permissões entram em vigor:

```bash
mysql> FLUSH PRIVILEGES;
```

No entanto, é importante que os utilizadores tenham apenas as permissões de que necessitam. Afinal, ao conceder determinados privilégios aos utilizadores, também está a aumentar o **risco de segurança**.

## Criar utilizador MySQL: revogar permissões de utilizador

O comando `REVOKE` é utilizado para revogar permissões de utilizador no MySQL. A sintaxe é semelhante à do comando `GRANT`. No entanto, neste caso, deve utilizar `FROM` em vez de `TO`:

```bash
mysql> REVOKE type_of_permission ON nombre_base_de_datos.nombre_tabla FROM 'nombreusuario'@'host';
```

Para mostrar as permissões atuais de um utilizador, pode utilizar o comando `SHOW GRANTS`:

```bash
mysql> SHOW GRANTS FOR 'nombreusuario'@'host';
```

O comando `DROP` é utilizado para eliminar um utilizador:

```bash
mysql> DROP USUARIO 'nombreusuario'@'localhost';
```

No entanto, a eliminação de utilizadores deve ser realizada com muito cuidado, especialmente no caso de utilizadores com privilégios administrativos. Evite a perda acidental de dados, certificando-se de que elimina o utilizador que realmente deseja.

Depois de criar um novo utilizador MySQL e conceder-lhe permissões, pode sair do cliente MySQL:

```bash
mysql> exit
```


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