Para criar um novo uti­li­za­dor no MySQL, é ne­ces­sá­rio ter acesso à base de dados. Além disso, também é ne­ces­sá­rio ter pri­vi­lé­gios de uti­li­za­dor root, com os quais é possível criar contas de uti­li­za­dor e gerir as per­mis­sões atri­buí­das. Da mesma forma, é im­por­tante saber que tipo de permissão será concedida ao novo uti­li­za­dor: per­mis­sões de leitura, per­mis­sões de escrita ou até mesmo per­mis­sões de ad­mi­nis­tra­dor.

Criar um uti­li­za­dor 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 uti­li­za­do­res. Se precisar de ajuda com a ins­ta­la­ção, en­con­trará todas as in­for­ma­ções im­por­tan­tes no seguinte guia para aprender a utilizar o MySQL.

Com uma conta root, pode criar novas contas de uti­li­za­dor MySQL e atribuir-lhes uma série de per­mis­sões. É im­por­tante saber que nos sistemas Ubuntu com MySQL 5.7 e versões pos­te­ri­o­res, a au­ten­ti­ca­ção do uti­li­za­dor root não é feita com senha, mas com o plugin auth_socket. Para que a au­ten­ti­ca­ção seja realizada com sucesso, o nome do uti­li­za­dor do sistema que deseja usar o cliente MySQL deve coincidir com o nome do uti­li­za­dor MySQL es­pe­ci­fi­cado no comando. Ou seja, para poder aceder à conta root, é im­por­tante antepor o comando sudo:

$ sudo mysql
bash

Para criar um novo uti­li­za­dor no MySQL, utilize o comando CREATE USER, com o qual poderá criar um uti­li­za­dor com um nome de uti­li­za­dor e uma palavra-passe es­pe­cí­fi­cos:

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

Substitua «nom­breu­su­a­rio» por um nome de uti­li­za­dor à sua escolha. Em seguida, introduza em host o nome do host a partir do qual o novo uti­li­za­dor se irá ligar. Se o uti­li­za­dor só puder aceder a partir do seu servidor Ubuntu local, pode in­tro­du­zir localhost.

Existem várias opções dis­po­ní­veis de plug-ins de au­ten­ti­ca­ção. Embora o plug-in auth_socket ofereça um alto nível de segurança, já que os uti­li­za­do­res devem in­tro­du­zir 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 al­ter­na­tiva, pode omitir a parte do comando WITH authentication_plugin para que o uti­li­za­dor realize a au­ten­ti­ca­ção com o plugin padrão do MySQL caching_sha2_password. O comando, neste caso, é mostrado a seguir:

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

Depois de criar um novo uti­li­za­dor, é hora de atribuir uma série de per­mis­sões a ele.

Atribuir per­mis­sões de uti­li­za­dor com MySQL create user

Para garantir a segurança dos dados no MySQL, é muito im­por­tante criar e gerir per­mis­sões de uti­li­za­dor. O comando para atribuir per­mis­sões de uti­li­za­dor é:

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

O valor PRIVILEGE determina quais pri­vi­lé­gios o uti­li­za­dor tem na base de dados e tabela es­pe­ci­fi­ca­das. Pode subs­ti­tuir este valor pelos seguintes comandos, entre outros:

  • CREATE: permite aos uti­li­za­do­res criar uma base de dados ou tabela.
  • SELECT: permite aos uti­li­za­do­res aceder aos dados.
  • INSERT: permite aos uti­li­za­do­res adicionar novas entradas às tabelas.
  • UPDATE: permite aos uti­li­za­do­res alterar entradas exis­ten­tes nas tabelas.
  • DEELETE: permite aos uti­li­za­do­res eliminar entradas da tabela.
  • DROP: permite aos uti­li­za­do­res eliminar tabelas completas da base de dados.

Você também pode conceder vários pri­vi­lé­gios de uma só vez aos novos uti­li­za­do­res. Use o mesmo comando, mas separe cada pri­vi­lé­gio com uma vírgula:

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

Se desejar, pode conceder os pri­vi­lé­gios es­ti­pu­la­dos para todas as bases de dados ou tabelas num único comando. Basta in­tro­du­zir * em vez dos nomes da base de dados e das tabelas. No comando seguinte, por exemplo, um uti­li­za­dor é au­to­ri­zado 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 exis­ten­tes com UPDATE.

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

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 pri­vi­lé­gios. Desta forma, as novas per­mis­sões entram em vigor:

mysql> FLUSH PRIVILEGES;
bash

No entanto, é im­por­tante que os uti­li­za­do­res tenham apenas as per­mis­sões de que ne­ces­si­tam. Afinal, ao conceder de­ter­mi­na­dos pri­vi­lé­gios aos uti­li­za­do­res, também está a aumentar o risco de segurança.

Criar uti­li­za­dor MySQL: revogar per­mis­sões de uti­li­za­dor

O comando REVOKE é utilizado para revogar per­mis­sões de uti­li­za­dor no MySQL. A sintaxe é se­me­lhante à do comando GRANT. No entanto, neste caso, deve utilizar FROM em vez de TO:

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

Para mostrar as per­mis­sões atuais de um uti­li­za­dor, pode utilizar o comando SHOW GRANTS:

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

O comando DROP é utilizado para eliminar um uti­li­za­dor:

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

No entanto, a eli­mi­na­ção de uti­li­za­do­res deve ser realizada com muito cuidado, es­pe­ci­al­mente no caso de uti­li­za­do­res com pri­vi­lé­gios ad­mi­nis­tra­ti­vos. Evite a perda acidental de dados, cer­ti­fi­cando-se de que elimina o uti­li­za­dor que realmente deseja.

Depois de criar um novo uti­li­za­dor MySQL e conceder-lhe per­mis­sões, pode sair do cliente MySQL:

mysql> exit
bash
Ir para o menu principal