По национальности — русский, в ВМФ с 1930 года. С октября по декабрь 1930 — командир роты молодых краснофлотцев 1-й артиллерийской бригады береговой обороны. С декабря 1930 по май 1931 и с августа по ноябрь 1931 прошёл обучение в Машинной школе учебного отряда Морских сил Балтийского моря. В мае — августе 1931 года служил учеником мотористом спасательного судна «Коммуна». С ноября 1931 по январь 1932 — командир отделения 1-го дивизиона артиллерийской бригады береговой обороны Морских сил Балтийского моря. С 1932 года — член ВКП(б). Служил командиром отделения 3-го отдельного артдивизиона (январь—ноябрь 1932), исполнял должность политрука роты молодых краснофлотцев 1-го учебного батальона Морских сил Дальнего Востока (ноябрь 1932—август 1933). С августа 1933 по сентябрь 1937 года служил политруком батареи 5-го отдельного железнодорожного артдивизиона укреплённого района. В 1937 году окончил шестимесячные курсы политруков.
Военком сторожевого корабля «Вьюга» (сентябрь 1937 — июнь 1938), военком эсминца «Войков» (июнь 1938—июнь 1939), начальник политотдела Совгаванского укреплённого района (июнь 1939—апрель 1940). С апреля 1940 по октябрь 1942 года — военком Николаевской-на-Амуре военно-морской базы ТОФ, затем до января 1943 года находился в распоряжении военного совета ТОФ, передан в распоряжение военного совета ПриВО, в марте-апреле 1943 года — в распоряжение военного совета Северного флота.
В апреле—июне 1943 года М. Н. Захаров служил пропагандистом политотдела бригады ПЛ СФ, позднее до октября — старшим инструктором организационно-инструкторского отдела. С октября 1943 по сентябрь 1944 года занимал должность инспектора политуправления флота, после чего занимал до мая 1947 года должность заместителя командира по политчасти линкора «Архангельск». В 1947—1948 годах закончил высшие военно-политические курсы ВМС. В 1948—1950 годах — начальник отдела кадров политического управления Черноморского флота, с мая 1950 по май 1953 года — начальник политотдела ЧФ и одновременно заместитель по политчасти командующего эскадрой. 3 ноября 1951 года М. Н. Захарову присвоено звание контр-адмирала. В период с мая 1953 по ноябрь 1955 года закончил военно-морской факультет Высшей военной академии им. К. Е. Ворошилова.
Член военного совета Восточно-Балтийского флота (январь — октябрь 1956) и ТОФ (октябрь 1945 — сентябрь 1971), начальник политотдела ТОФ (сентябрь 1957—сентябрь 1971 года). 7 мая 1960 года получил звание вице-адмирала. 25 октября 1967 года получил очередное звание адмирала. В январе-марте 1969 года прошёл двухмесячные академические курсы при Военно-политической академии им. В. И. Ленина. После убытия с последней должности — начальник политотдела Военно-морской академии. В августе 1976 года убыл в распоряжение Главнокомандующего ВМФ. С февраля 1977 года находился в отставке по болезни.
Похоронен на Серафимовском кладбище.
Во Владивостоке установлена мемориальная доска на улице, названной в честь адмирала М. Н. Захарова.