MySQL: criando um usuário que pode se conectar a partir de vários hosts

30

Estou usando o MySQL e preciso criar uma conta que possa se conectar a partir do host local ou de outro servidor, ou seja, 10.1.1.1. Então eu estou fazendo:

CREATE USER 'bob'@'localhost' IDENTIFIED BY 'password123';
CREATE USER 'bob'@'10.1.1.1' IDENTIFIED BY 'password123';
GRANT SELECT, INSERT, UPDATE, DELETE on MyDatabse.* to 'bob'@'localhost', 'bob'@'10.1.1.1';

Isso funciona bem, mas existe alguma maneira mais elegante de criar uma conta de usuário vinculada a vários IPs ou precisa ser feita dessa maneira?

Minha principal preocupação é que, no futuro, as permissões sejam atualizadas para uma conta 'bob', mas não para a outra.

DrStalker
fonte

Respostas:

20

Se você deseja restringir ao host e não deseja especificar com base em uma sub-rede ou curinga %, essa é a única maneira de fazê-lo. Mais detalhes estão disponíveis na documentação do MySQL .

Ainda estou tentando encontrar maneiras de eliminar a sobrecarga ao gerenciar a autenticação para grandes instalações do MySQL e ainda não encontrei a solução perfeita.

Warner
fonte
8

Vamos começar criando um novo usuário chamado "chaminda" dentro do shell do MySQL:

CREATE USER 'chaminda'@'%' IDENTIFIED BY 'password';

A primeira coisa a fazer é fornecer ao usuário a permissão necessária e aqui eu dei toda a permissão ao usuário em particular.

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'%';

Recarregue todos os privilégios.

FLUSH PRIVILEGES;

Se você deseja permitir o intervalo de IPs para um usuário específico, use o seguinte 10.1.1.%

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'10.1.1.%';

Nota: Aqui Host Name =% e isso significa que você pode acessar este servidor de banco de dados a partir de qualquer host. A concessão de todos os privilégios ao usuário é um grande risco e essa não é uma prática recomendada. Além disso, você pode substituir o usuário 'chaminda' por 'bob'.

Chaminda Bandara
fonte
5
Isso não responde à pergunta. Ele concede acesso a um usuário de todos os IPs, mas o OP está perguntando sobre uma maneira mais elegante de permitir que um único usuário acesse o banco de dados a partir de uma lista de IPs. Basicamente, em vez de várias instruções para adicionar um usuário várias vezes a partir de vários IPs, a idéia é adicionar um único usuário que possa acessar o banco de dados a partir de vários IPs, o que torna o gerenciamento mais fácil e menos propenso a erros.
Anthony
Você também pode usar _ como um curinga como 10.1.1.1__ para corresponder a 100 -199, mas para 200 você precisará criar uma conta separada ou usar o curinga% e incluir 0-99 e 201-255 também
Chaminda Bandara
-3

O MySQL permite vários curingas em uma linha. Uma solução possível é configurar o Host para que o usuário Bobseja

locahost/10.1.1.1

Referência:

http://dev.mysql.com/doc/refman/5.1/en/connection-access.html

GabrielC
fonte
Não é isso que a documentação está dizendo. Conforme listado na tabela, o /255.255.255.0 é uma máscara de rede. Se houver uma maneira de listar vários curingas na definição de host, não é esse o caminho.
majikman