Это мой первый вопрос здесь, и я честно сделал это после долгого расследования без ответов.Mysql CREATE DEFINER
Я создал веб-приложение интрасети, которое выполняется на веб-сервере CentOS, приложение использует другой локальный сервер (всегда CentOS) для базы данных mysql.
Внутри базы данных я создал процедуры Wich Evey начала так:
CREATE DEFINER='localuser02'@'192.168.0.5' PROCEDURE 'Createuser'
IP-192.168.0.5 является IP сервера, на котором установлено приложение.
До сих пор все нормально, приложение работает. Теперь несколько дней назад, когда сервер, запускающий приложение, является старым, чтобы добавить другой сервер (я имею в виду товарный сервер), то, о чем я думал, - это сделать баланс трафика между ними.
Теперь я правильно настроил обе серверы для запуска приложения, проблема связана с SQL DEFINER, который имеет только один IP-адрес.
У моих серверов теперь есть 192.168.0.5 и 192.168.0.6.
Теоретически мой новый DEFINER должен быть таким:
CREATE DEFINER='localuser02'@'192.168.0.5, 192.168.0.6' PROCEDURE 'Createuser'
Но я не знаю, как поступить.
благодарит за ответ.
Для подстановочных знаков я понимаю, как использовать с процентами, как вы сказали 192.168.% Или как предлагалось eggyal 192.168.0.% мой вопрос и проблемы при этом, если он будет работать? Так как моя сеть распределяется следующим образом:
192.168.0.1 - router
192.168.0.2 - voip phone
192.168.0.3 - voip phone
192.168.0.4 - firewall
192.168.0.5 - Server 01
192.168.0.6 - Server 02
192.168.0.7 - SQL Server
192.168.0.8 - LAN Printer
192.168.0.9 - First pc
192.168.0.10 - Second pc
Мой вопрос, имеющий IP от 192.168.0.1 до xxx.10 зарезервирован, если добавить подстановочные на SQL может быть столкновение с адресом я имею в виду мог DEFINER попытаться проверить подлинность например, на VoIP-телефоне или принтере или брандмауэре вместо двух серверов?
Также второй вопрос, есть возможность указать несколько IP, чтобы быть более аккуратным, как:
CREATE DEFINER='localuser02'@'192.168.0.5, 192.168.0.6' PROCEDURE 'Createuser'
Заранее спасибо
«ОПРЕДЕЛЕНИЕ» - это просто пользователь, который «владеет» процедурой; если процедура определена с помощью 'SQL SECURITY DEFINER', то она будет запускаться с привилегиями этой учетной записи независимо от пользователя, который ее вызывает. Учетные данные 'DEFINER' должны совпадать с действительной учетной записью пользователя, часть узла которой указывает машину (ы), с которой пользователь может подключиться. Поэтому нет особой необходимости менять «ОПРЕДЕЛЕНИЕ» в этом случае; однако, если вы хотите включить учетную запись 'localuser02' для подключения с любого компьютера, вы можете изменить свои учетные данные для использования подстановочного знака:' @ '192.168.0.%' '. – eggyal
Привет, Эггьял, спасибо за ваш ответ. Из того, что я понял, исправьте меня, если я ошибаюсь, процедура будет работать либо пользователем, либо с помощью приложения с сервера 01 или сервера 02? Я имею в виду, что на обоих серверах приложение выполняет запросы и вызовы в базе данных, поэтому в этом случае, если я использую только один IP-адрес, один из первого сервера 192.168.0.5 будет работать пользователь, который использует приложение на сервере 02 (192.168.0.6) ? Я имею в виду, что пользователь сервера 02 будет аутентифицирован по серверу 01, если в процедуре я добавляю IP-адрес первого сервера? Спасибо –
Для подстановочных знаков у меня проблема, потому что в моей сети у меня есть 192.168.0.7 до 192.168.0.10, которые хранятся на других ПК, чем 192.168.0.2 до 192.168.0.3, которые используются телефонами и принтерами voip, в том случае, если SQL будет поиск IP-адресов, которые используются другими компьютерами в моей сети, и вызовет ошибки? Могу ли я добавить в CREATE DEFINER две разделенные запятой IP? спасибо –