Adicionando Novos Usuários ao MariaDB


Existem duas maneiras de adicionar usuários: utilizando instruções GRANT ou manipulando as tabelas de permissões do MariaDB diretamente. O método preferido é utilizar instruções GRANT, porque elas são mais concisas e menos propensas a erros. Leia "A Sintaxe de GRANT e REVOKE".

Existem vários programas de colaboradores (como o phpMyAdmin) que podem ser utilizados para criar e administrar usuários. Leia Apêndice B, Contribuição de Programas.

Os exemplos abaixo mostram como usar o cliente MariaDB para configurar novos usuários. Estes exemplos assumem que privilégios são configurados de acordo com os padrões descritos na seção anterior. Isto significa que para fazer alterações, você deve se conectar na mesma máquina em que o mysqld está executando, você deve se conectar com o usuário root, e o usuário root deve ter os privilégios inster ao banco de dados MariaDB e o administrativo reload. Também, se você alterou a senha do usuário root, você deve especificá-la para os comandos MariaDB abaixo.

Primeiro, use o programa MariaDB para se conectar ao servidor como o usuário root do MariaDB:

shell> mysql --user=root mysql

Você pode adicionar novos usuários utilizando instruções GRANT:

mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
 IDENTIFIED BY 'alguma_senha' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@'%'
 IDENTIFIED BY 'alguma_senha' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;

Estas instruções GRANT configuram três novos usuários:

Também é possível adicionar a mesma informação de acesso do usuário diretamente, utilizando instruções INSERT e depois dizendo ao servidor para recarregar as tabelas de permissões:

shell> mysql --user=root mysql
mysql> INSERT INTO user VALUES('localhost','monty',PASSWORD('alguma_senha'),
 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user VALUES('%','monty',PASSWORD('alguma_senha'),
 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user SET Host='localhost',User='admin',
 Reload_priv='Y', Process_priv='Y';
mysql> INSERT INTO user (Host,User,Password)
 VALUES('localhost','dummy','');
mysql> FLUSH PRIVILEGES;

Dependendo da sua versão do MariaDB, você pode precisar utilizar um número diferente de valores 'Y' acima. (Versões anteriores à versão 3.22.11 tem menos campos de privilégios, e posteriores a 4.02 têm mais). Para o usuário admin, a maior sintaxe legível de INSERT usando SET que está disponível a partir da versão 3.22.11 é a utilizada.

Note que para configurar um superusuário, você só precisar criar uma entrada na tabela user com os campos de privilégios configurados para 'Y'. Não é necessário gerar entradas nas tabelas db ou host.

Na última instrução INSERT (para o usuário dummy), apenas as colunas Host, User e Password nos registros da tabela user tem valores atribuídos. Nenhuma das colunas de privilégios são definidas explicitamente, assim o MariaDB atribui a todas o valor padrão de 'N'. Isto é a mesma coisa que o GRANT USAGE faz.

O seguinte exemplo adiciona um usuário custom que pode acessar o banco de dados bankaccout apenas do localhost, o banco de dados expenses somente de whitehouse.gov e o banco de dados customer de todas de server.domain. Ele deseja utilizar a senha obscure das três máquinas.

Para configurar os privilégios deste usuário utilizando instruções GRANT, execute estes comandos:

shell> mysql --user=root mysql
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
 -> ON bankaccount.*
 -> TO custom@localhost
 -> IDENTIFIED BY 'obscure';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
 -> ON expenses.*
 -> TO custom@'whitehouse.gov'
 -> IDENTIFIED BY 'obscure';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
 -> ON customer.*
 -> TO custom@'server.domain'
 -> IDENTIFIED BY 'obscure';

Para configurar os privilégios do usuário modificiando as tabelas de permissões diretamente, utilize estes comandos (perceba o FLUSH PRIVILEGES no final):

shell> mysql --user=root mysql
mysql> INSERT INTO user (Host,User,Password)
 -> VALUES('localhost','custom',PASSWORD('obscure'));
mysql> INSERT INTO user (Host,User,Password)
 -> VALUES('whitehouse.gov','custom',PASSWORD('obscure'));
mysql> INSERT INTO user (Host,User,Password)
 -> VALUES('server.domain','custom',PASSWORD('obscure'));
mysql> INSERT INTO db
 -> (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
 -> Create_priv,Drop_priv)
 -> VALUES
 -> ('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
 -> (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
 -> Create_priv,Drop_priv)
 -> VALUES
 -> ('whitehouse.gov','expenses','custom','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
 -> (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
 -> Create_priv,Drop_priv)
 -> VALUES('server.domain','customer','custom','Y','Y','Y','Y','Y','Y');

Como no exemplo anterior que usaram as instruções INSERT, você pode precisar de usar um número diferentes de valores 'Y', dependendo de sua versão do MariaDB.

As primeiras três instruções INSERT adicionam entradas na tabela user que permite ao usuário custom conectar a partir de várias máquinas com a senha determinada, mas não concede permissões ao mesmo (todos os privilégios são configurados com o valor padrão de 'N'). As próximas três instruções INSERT adicionam entradas na tabela db que concedem privilégios à custom para os bancos de dados bankaccount, expenses e customer, mas só quando acessados à partir das máquinas apropriadas. Normalmente, depois de modificar as tabelas de permissões diretamente, você deve dizer ao servidor para recarregá-las (com FLUSH PRIVILEGES) para que as alterações nos privilégios tenham efeito.

Se você deseja fornecer a um usuário específico acesso de qualquer máquina em um determinado domínio (por exemplo, meudomínio.com), você pode utilizar uma instrução GRANT como a seguir:

mysql> GRANT ...
 -> ON *.*
 -> TO myusername@'%.mydomain.com'
 -> IDENTIFIED BY 'mypassword';

Para realizar a mesma coisa modificando diretamente as tabelas de permissões, faça isto:

Retornar