Назад | Перейти на главную страницу

MySQL: создание пользователя, который может подключаться с нескольких хостов

Я использую MySQL, и мне нужно создать учетную запись, которая может подключаться либо с локального хоста, либо с другого сервера, то есть 10.1.1.1. Итак, я делаю:

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

Это отлично работает, но есть ли более элегантный способ создать учетную запись пользователя, которая связана с несколькими IP-адресами, или это нужно делать таким образом?

Меня больше всего беспокоит то, что в будущем разрешения будут обновляться для одной учетной записи «bob», но не для другой.

Если вы хотите ограничить хостом и не хотите указывать на основе подсети или подстановочного знака, используя %, это единственный способ сделать это. Более подробная информация доступна в Документация MySQL.

Я все еще пытаюсь найти способы устранить накладные расходы при управлении аутентификацией в больших установках MySQL, и мне еще предстоит найти идеальное решение.

Начнем с создания нового пользователя по имени chaminda в оболочке MySQL:

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

Первое, что нужно сделать, это предоставить пользователю необходимое разрешение, и здесь я дал все разрешения конкретному пользователю.

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

Перезагрузите все привилегии.

FLUSH PRIVILEGES;

Если вы хотите разрешить диапазон IP-адресов для определенного пользователя, используйте следующее: 10.1.1.%

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

Примечание: Здесь имя хоста =%, а это означает, что вы можете получить доступ к этому серверу базы данных с любого хоста. Предоставление пользователю всех прав - большой риск, и это не лучшая практика. Далее вы можете заменить пользователя chaminda на bob.

Ответ Warner можно уточнить, используя диапазоны CIDR в вашей пользовательской спецификации (в нотации «сеть» / «маска сети»), например:

СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'bob'@'10.0.0.0/255.0.0.0', ОПРЕДЕЛЕННЫЙ 'password123';

СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'bob'@'192.168.0.0/255.255.255.192' ИДЕНТИФИЦИРОВАННЫЙ 'password123';

Эта конструкция обеспечивает более детальный контроль доступа. Ответ Warner позволит пользователю bob подключаться с любого хоста в любом месте вашей сети (или с любого хоста в общедоступном Интернете, если ваш сервер открыт для общедоступной сети), что, вероятно, не подойдет для всех вариантов использования.

Принято применять «глубинную защиту», которая способствует ограничению доступа пользователей только с желаемых и доверенных адресов хоста. Также не забудьте ограничить входящие соединения на уровне хоста, отражая желаемые и доверенные адреса хостов в вашем брандмауэре хоста (например, iptables, firewalld и т. Д.).

MySQL допускает использование нескольких подстановочных знаков в одной строке. Возможное решение - установить Host для пользователя Bob быть

locahost/10.1.1.1

Ссылка:

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