Я использую 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