There is a reason you will need more RAM ... the INFORMATION_SCHEMA database.
What has to get populated in it ??? Let pick just two tables as an example:
Imagine (all the columns in the tables + the number of tables) multiplied by 3000 ???
The metadata would be need lots of RAM to map them out. This is ...
So you have 100GB of data held in 3000 databases?
Each of those database is trivially small (I'd guess about 30MB each).
I would seriously suggest that you need to reconsider your desire to segment / segregate your data in this way. It's almost certainly not the best way to do things.
You're trying to run a Windows Server with only 4GB of RAM?
This issue is related to the Search value not being a _ci charset.
Json_search() allows case insensitive searches as long as your collation of datatable is _ci and you search parameter is _ci as well.
To solve this in a stored procedure using prepared statement i had to do the following
SET @theQuery = "select *