MySQL é um sistema de gerenciamento de banco de dados relacional popular e amplamente utilizado para várias aplicações web. Uma das tarefas importantes que os administradores de banco de dados têm que executar é criar novos usuários do MySQL e conceder-lhes os direitos de acesso apropriados.
Direitos de acesso ou privileges são regras que definem o que um usuário pode fazer com um banco de dados, tabela, coluna ou outro objeto. Ao conceder direitos de acesso adequados, você pode melhorar a segurança e o desempenho do banco de dados.
Neste artigo, Bardimin discutirá como criar um novo usuário MySQL e conceder direitos de acesso através da linha de comando. Bardimin também discutirá alguns comandos do MySQL que são úteis para gerenciar usuários e direitos de acesso.
Passo 1: Faça login no MySQL como Root
Antes de criar um novo usuário MySQL ou conceder permissões, você deve estar conectado ao MySQL como o usuário root ou outro usuário que tenha GRANT direitos de acesso. O usuário root é o usuário que tem direitos de acesso total a todos os bancos de dados e objetos MySQL. Você pode fazer login no MySQL como root usando o seguinte comando:
mysql -u root -p
Este comando solicitará que você insira a senha de root que você criou ao instalar o MySQL. Depois de inserir a senha correta, você verá um prompt do MySQL como este:
mysql>
Etapa 2: Criar um novo usuário do MySQL
Depois de fazer login no MySQL como root, você pode criar um novo usuário do MySQL usando o comando CREATE USER. O formato geral deste comando é o seguinte:
CREATE USER 'username''host' IDENTIFIED BY 'password';
Aqui, você precisa substituir os username, host e password pelos valores correspondentes. username é o nome do usuário que você deseja criar. host é o nome do host ou endereço IP a partir do qual um usuário pode se conectar ao MySQL.
Você pode usar % para indicar que os usuários podem se conectar de qualquer lugar, ou você pode restringir os usuários a se conectarem apenas de hosts específicos. password é a senha que você deseja definir para o usuário.
Por exemplo, se você deseja criar um usuário chamado user1 que pode se conectar de qualquer lugar com uma senha pass1, você pode usar o seguinte comando:
CREATE USER 'user1''%' IDENTIFIED BY 'pass1';
Se o comando for bem-sucedido, você verá uma mensagem como esta:
Query OK, 0 rows affected (0.01 sec)
Você pode verificar se o usuário foi criado corretamente usando o comando SELECT na tabela mysql.user:
SELECT User, Host FROM mysql.user;
Este comando exibirá todos os usuários existentes do MySQL e seus hosts. Você deve ver resultados como este:
+------------------+-----------+ | User | Host | +------------------+-----------+ | root | localhost | | mysql.session | localhost | | mysql.sys | localhost | | user1 | % | +------------------+-----------+ 4 rows in set (0.00 sec)
Aqui, você pode ver que user1 usuário foi criado com o host %.
Etapa 3: Conceder direitos de acesso a novos usuários do MySQL
Depois de criar um novo usuário do MySQL, você deve conceder as permissões apropriadas para esse usuário. Você pode conceder permissões usando o comando GRANT. O formato geral deste comando é o seguinte:
GRANT privileges ON database.table TO 'username''host';
Aqui, você deve substituir os privileges, database, table, username e host pelos valores correspondentes. privileges é o direito de acesso que você deseja conceder a um usuário. Você pode conceder direitos de acesso específicos, como SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX, EXECUTE, GRANT OPTION e muito mais.
Você também pode conceder direitos de acesso global, como ALL PRIVILEGES ou ALL que inclui todos os direitos de acesso existentes. database é o nome do banco de dados ao qual você deseja conceder direitos de acesso. Você pode usar * para mostrar todos os bancos de dados. table é o nome da tabela à qual você deseja conceder direitos de acesso. Você também pode usar * para mostrar todas as tabelas. username e host são nomes de usuário e hosts que você criou antes.
Por exemplo, se você quiser conceder direitos de acesso SELECT, INSERT, UPDATE e DELETE aos usuários user1 em todas as tabelas db1 banco de dados, poderá usar o seguinte comando:
GRANT SELECT, INSERT, UPDATE, DELETE ON db1.* TO 'user1''%';
Se o comando for bem-sucedido, você verá uma mensagem como esta:
Query OK, 0 rows affected (0.01 sec)
Você pode verificar se as permissões foram concedidas corretamente usando o comando SHOW GRANTS:
SHOW GRANTS FOR 'user1''%';
Esse comando exibirá todos os direitos de acesso de propriedade do usuário user1. Você deve ver resultados como este:
+--------------------------------------------------------------+
| Grants for user1% |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `user1``%` |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `db1`.* TO `user1``%`|
+--------------------------------------------------------------+
2 rows in set (0.00 sec)
Aqui, você pode ver que user1 usuário tem direitos de acesso SELECT, INSERT, UPDATE e DELETE em todas as tabelas db1 banco de dados.