Both may and might are used to convey the possibility of something. Purists insist that may should be used when describing something that is happening now and might should be used when describing something that happened in the past. Here are two examples:
I may have your keys – check to see whether they are in my bag. (Present tense) (It is possible that I have the keys, but it is also possible that I do not.) He might have eaten breakfast before he went to work today. (Past tense) (It is possible he had breakfast before he left, but it is also possible that he did not.)
However, these days, most people accept may and might in either case: I might have your keys – check to see whether they are in my bag. He may have eaten breakfast before he went to work today.
There are some situations, however, where there is a difference between may and might. If an event is being described which did not, in fact, happen, then it is better to use might. Here is an example:
The icy water might have killed her, but she managed to get out in time. (The icy water could have killed her if she stayed in it long enough but, because she was quick, that did not happen.)