MySQL: crear un usuario que pueda conectarse desde múltiples hosts

30

Estoy usando MySQL y necesito crear una cuenta que pueda conectarse desde el host local o desde otro servidor, es decir, 10.1.1.1. Entonces estoy haciendo:

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';

Esto funciona bien, pero ¿hay alguna forma más elegante de crear una cuenta de usuario que esté vinculada a varias direcciones IP o debe hacerse de esta manera?

Mi principal preocupación es que en el futuro, los permisos se actualizarán para una cuenta 'bob' pero no para la otra.

DrStalker
fuente

Respuestas:

20

Si desea restringir al host y no desea especificar en función de una subred o comodín %, esa es la única forma de hacerlo. Más detalles están disponibles en la documentación de MySQL .

Todavía estoy tratando de encontrar formas de eliminar los gastos generales al administrar la autenticación en grandes instalaciones de MySQL y aún no he encontrado una solución perfecta.

Warner
fuente
8

Comencemos creando un nuevo usuario llamado "chaminda" dentro del shell de MySQL:

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

Lo primero que debe hacer es proporcionar al usuario el permiso necesario y aquí he dado todo el permiso al usuario en particular.

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

Recarga todos los privilegios.

FLUSH PRIVILEGES;

Si desea permitir el rango de direcciones IP a un usuario en particular, use de la siguiente manera 10.1.1.%

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

Nota: Aquí el nombre de host =% y eso significa que puede acceder a este servidor de base de datos desde cualquier host. Otorgar todos los privilegios al usuario es un gran riesgo y esa no es una práctica recomendada. Además, puede reemplazar el usuario 'chaminda' por 'bob'.

Chaminda Bandara
fuente
55
Esto no responde la pregunta. Otorga acceso a un usuario desde todas las IP, pero el OP pregunta por una forma más elegante de permitir que un solo usuario acceda a la base de datos desde una lista de IP. Básicamente, en lugar de múltiples declaraciones para agregar un usuario varias veces desde múltiples IP, la idea es agregar un solo usuario que pueda acceder a la base de datos desde múltiples IP, lo que hace que la administración sea más fácil y menos propensa a errores.
Anthony
También puede usar _ como comodín como 10.1.1.1__ para que coincida con 100-199, pero para 200 debe crear una cuenta separada o usar el comodín% e incluir también 0-99 y 201-255
Chaminda Bandara
-3

MySQL permite múltiples comodines en una fila. Una posible solución es configurar Host para que el usuario Bobsea

locahost/10.1.1.1

Referencia:

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

GabrielC
fuente
Eso no es lo que dice la documentación. Como se enumera en la tabla, /255.255.255.0 es una máscara de red. Si hay una manera de enumerar varios comodines en la definición de host, esa no es la forma de hacerlo.
majikman