Mutexes, monitors and semaphores are all synchronization mechanisms i.e. they are used to mediate access to a shared resource between multiple processes or threads (referred to as processes henceforth).
However, they are used differently:
Mutex:
Used to provide mutual exclusion i.e. ensures at most one process can do something (like execute a section of code, or access a variable) at a time.
A famous analogy is the bathroom key in a Starbucks; only one person can acquire it, therefore only that one person may enter and use the bathroom. Everybody else who wants to use the bathroom has to wait till the key is available again.
Monitor:
Provides mutual exclusion to an object i.e. at any point in time, at most one process may access any of the object's members/ execute any of its methods. This is ideologically similar to a mutex for an entire OOP instance*; no part of the instance can be touched by more than one process at a time.