Данные для работы:
+-------------+-------------+
| user | host |
+-------------+-------------+
| user1 | host1 | -
| user1 | ip1 | -
| user1 | host2 | *
| user2 | host2 | -
| user2 | ip2 | -
| unknown | unknown | +
| user1 | unknown | +
| unknown | host | +
+-------------+-------------+
Символ справа от таблицы: - не показывать |+ покажи как они неизвестны |* потому что пользователь может подключиться только к одному хосту, если только я не авторизовал его, в этом случае я бы также предоставил пару вызовов хосту пользователя для вызова, и он не отобразился бы.
Вот как я хочу, чтобы все работало так или иначе.
Вот где я нахожусь с помощью моего вопроса , и, поскольку теперь есть еще одно условие, необходимо задать новый вопрос.
Текущая процедура
USE mysql;
DROP PROCEDURE IF EXISTS ShowUsers;
DELIMITER $
CREATE PROCEDURE `ShowUsers`(
IN KnownUsers varchar(500),
IN KnownHosts varchar(500)
)
BEGIN
SELECT
user,host
FROM
user
WHERE
NOT FIND_IN_SET(host, KnownHosts)
AND
NOT FIND_IN_SET(user, KnownUsers)
ORDER BY user, host ASC;
END $
DELIMITER ;
Вызов такой процедуры
# known users and known hostnames or ips to match and exclude from results.
SET @Usernames = 'user1,user2';
SET @Hostnames = 'host1,host2,ip1,ip2'
CALL ShowUsers(@Usernames, @Hostnames);
Намеченный результат:
+-------------+-------------+
| user | host |
+-------------+-------------+
| user1 | host2 | *
| unknown | unknown | +
| user1 | unknown | +
| unknown | host | +
+-------------+-------------+
Iхотите иметь возможность предоставлять несколько пар пользователь: хост (известные допустимые учетные данные) и возвращать результаты, которые не совпадают, поэтому возвращайте только подозрительные / незаконные учетные данные в результатах запроса.
Я создал скрипку https://www.db -fiddle.com / f / xb7dWXbkokHGbcPdzR7BUa / 4 Надеюсь, вы увидите, куда я иду с этим.