Пока базы данных находятся на одном сервере, используйте перекрестное объединение баз данных. Для входа в базу данных для доступа к данным также потребуются разрешения для обеих баз данных. Что-то вроде:
SELECT AA.userID, BA.first, BA.last
FROM databasename.schema.table AA
INNER JOIN databasename.schema.table BA ON AA.userID = BA.userID
В ответ на комментарии:
Не думаю, что правильно прочитал часть о нескольких входах в систему, извините. Вы не можете использовать два разных входа в MySQL для одного подключения. Если вам нужно сделать несколько запросов, у вас есть только три варианта. A) Переберите первый набор результатов и выполните несколько запросов. Б) Запустите запрос, который использует предложение WHERE с userID IN (@firstResultSet) и передайте первый набор результатов. C) Выберите все из второй БД и объедините их в коде.
Все три из этих опций не очень хороши, поэтому я хотел бы спросить, почему вы не можете изменить права пользователя для одной из двух БД? Я также хотел бы спросить, зачем вам нужно выбирать имена и идентификаторы 20 000 пользователей? Если это не какой-то тип дампа данных, я бы искал другой способ отображения данных, который был бы более простым в использовании и менее требовательным к запросам.
Все сказанное, какой бы вариант вы ни выбрали, будет зависеть от множества различных обстоятельств. При небольшом количестве записей, менее 1000, я бы использовал вариант B. При большем количестве записей я бы, вероятно, использовал параметры C и попытался бы поместить два набора результатов во что-то, что можно объединить (например, с помощью array_combine).