Between August 2009 and December 2010 Rahim served as Bangladesh's vice-captain in all formats. At domestic level he represents Rajshahi Division and captains Sylhet Super Stars.
According to Jamie Siddons in 2010, a former Bangladesh coach, Rahim's batting is so versatile that he can bat anywhere in the top order, from one to six.
Rahim was born on 9 May 1988 to Mahbub Habib and Rahima Khatun. He finished his secondary schooling at Bogra Zilla School. In between playing cricket, he studied history at the Jahangirnagar University. He sat his master's degree examinations in 2012.
Before playing for the national team, Rahim played for Bangladesh Under-19s. He represented them in three Youth Tests and 18 Youth One Day Internationals (ODIs) between 2004 and 2006, averaging 31.75 and 36.00 with the bat in the respective formats. Rahim trained at the Bangladesh Institute of Sports.
During the 2006 U-19 Cricket World Cup, hosted by Sri Lanka in February, Rahim captained the Bangladesh side which included future international players Shakib Al Hasan and Tamim Iqbal among others. Rahim was one of two players at the tournament with Test-match experience. Under his guidance Bangladesh reached the quarter finals of the tournament. Later that month Rahim was recalled to the senior Test squad for the first time since the England tour in 2005. He was selected as a specialist batsmen, with Khaled Mashud chosen as the wicket-keeper for the series against Sri Lanka.
In December 2010, Rahim recorded his best score in a one-day match. Playing for Rajshahi in the National Cricket League, he scored 114 from 120 deliveries as his team lost by 8 runs.
The Bangladesh Cricket Board founded the six-team Bangladesh Premier League in 2012, a twenty20 tournament to be held in February that year. The BCB made Mushfiq the 'icon player' for Duronto Rajshahi. Under his leadership Duronto overcame a weak start to progress to the semi-finals where they lost to Barisal Burners; Rahim contributed 234 runs from 11 matches.
Rahim was selected for Bangladesh's tour of England in 2005. It was Bangladesh's first tour of England, where they faced unfamiliar conditions and the batsmen struggled against seam bowling and uneven bounce throughout the series. Mushfiqur adapted his batting style in the warm up matches, "consistently playing late and straight" according to Wisden, and managed to score 63 against Sussex and scored 115 not out against Northamptonshire in the warm up matches.
Although initially named in the squad as a part-time wicket-keeper, his performances in the warm up matches led to his selection for the first Test at Lord's as a specialist batsman as well. The 16-year-old Rahim scored 19 in the first innings and was one of just three batsman to reach double figures as Bangladesh were dismissed for 108. After twisting his ankle, he did not played further part in the tour.
Rahim was included in Bangladesh's squad to tour Zimbabwe for five ODIs in 2006. He was one of three uncapped ODI players included in the squad alongside all-rounders Farhad Reza and Shakib Al Hasan. He scored his maiden half-century at Harare against Zimbabwe.
his good performances led him to picked as the first-choice wicket-keeper ahead of Khaled Mashud for the World Cup in the West Indies. Rahim was chosen because his batting was considered better.
Rahim was recalled for the second Test against Sri Lanka in July 2007, replacing Mashud. Although Bangladesh lost by an innings and 90 runs, Rahim combined with Mohammad Ashraful – the new captain – to score a record 191 for Bangladesh's sixth-wicket partnership. In December 2007, the Bangladesh Cricket Board (BCB) granted Rahim a one-year grade B (third tier) contract, one of 22 central contracts with the Board at the time.
Following the 2007 ICC Cricket World Cup, Rahim endured a series of poor scores, including five innings in which he amassed four runs altogether. As a result, when South Africa toured in March for three ODIs and Bangladesh went to Pakistan for five ODIs the next month, Rahim was dropped in favour of Dhiman Ghosh.
Rahim was recalled to the squad for a tri-series with Pakistan and India and the 2008 Asia Cup. When 17 contracts were announced in April 2009, Rahim's was renewed, marking Rahim as Bangladesh's first choice 'keeper.
Rahim was appointed vice-captain for Bangladesh's tour of Zimbabwe in August 2009. The position was vacated as the previous holder, Shakib Al Hasan, was filling-in as captain for the injured Mashrafe Mortaza. Bangladesh won the five match ODI series 4–1. In the final ODI, Rahim scored 98, beating his previous highest score in list A matches of 58, to help his team to victory. With 169 runs in the series at an average of 56.33, Rahim finishes the tour as Bangladesh's fourth-highest run scorer.
Rahim retained the vice-captaincy for the home Test series against India in January and February 2010. On 21 January, in the fifth day of the first Test, he scored his maiden Test century and the fastest by a Bangladeshi in Test cricket, off only 112 balls as Bangladesh delayed an Indian victory, being the last man out as India won by 113 runs. England toured Bangladesh in February and March for two Tests and three ODIs, where Bangladesh lost all two formats. In the series, Rahim was his team's second-highest run-scorer. He scored two half-centuries in the first Test, becoming the 6th Bangladesh batsman to perform the feat.
Having impressed at home, Rahim's performance in the return tour in England in May was expected to be crucial for the rankings. In the tour, Rahim could managed 40 runs from two Tests as Bangladesh's batsmen struggled in English conditions and slumped to a 2–0 defeat. In the first ODI of the tour Rahim was struck in the face while keeping wicket to spinner Faisal Hossain. An x-ray revealed no fractures, however as a precaution he was rested for a week, missing the rest of the series.
In November 2010, BCB announced 16 central contracts. Rahim was one of six players in the top level. In December 2010, Tamim Iqbal replaced Rahim as Bangladesh's vice-captain.
Rahim was included in Bangladesh's 15-man squad for the 2011 World Cup. Bangladesh were knocked out in the group stage and Rahim had a poor tournament personally. There were suggestions that he could be dropped, especially as fellow wicket-keeper Dhiman Ghosh was scoring heavily in Bangladesh's domestic competition. In August 2011, Mushfiqur hit 101 from 100 balls having his second century against Zimbabwe was not enough to stop Bangladesh losing the third one-day series by five runs.
On 20 September 2011, Rahim was named Bangladesh captain, taking over from Shakib Al Hasan after a disappointing tour of Zimbabwe. The announcement was made midway through the BCB Cup, a tournament involving the senior Bangladesh team, Bangladesh A, and a side made up of academy players. Rahim had already been captaining Bangladesh in the tournament on a temporary basis. The competition was won by Bangladesh A.
In 2011, West Indies toured Bangladesh in October for a T20I, three ODIs, and two Tests. In his first international match as captain, Rahim produced a Man-of-the-Match performance, scoring 41 not out from 26 balls to help his team to victory. Desptire T20I win, Bangladesh lost the ODI series 2–1. Rahim was Bangladeshi's leading run-scorer with 100, including a fifty. The following month, Pakistan toured for three ODIs and two Tests. Bangladesh lost the ODI series 3–0, and Rahim managed just 12 runs from three innings.
In the 2012 Asia Cup, under Rahim's captaincy, Bangladesh won two out of the three games they have played and reached the final for the first time where they lost to Pakistan in the final. In April his grade A+ central contract was renewed. On 11 March 2013, during the first test of the tour of Sri Lanka in Galle, Rahim became the first Bangladeshi to score a double hundred, beating the previous highest of 190 set by Mohammed Ashraful earlier in the day.
Rahim announced his resignation as captain on 8 May 2013, but a few days later Mushfiqur announced he had made a "mistake", and on 3 July 2013 the BCB announced they would be retaining Mushfiqur as captain until the end of the year. Rahim had an outstanding home series against New Zealand in October and November 2013. His team drew the first two tests, won all three ODIs but lost the only T20 match.
Rahim continued his captaincy in 2014 and lost to Sri Lanka in a home series. During the series, he suffered a hand injury for which he was replaced with Anamul Haque in wicket keeping. He also missed out the T20 international matches against Sri Lanka in which Mashrafe Mortaza took the job of captaincy. He scored his second one-day international century against India in the beginning of the 2014 Asia Cup but struggled in that match with his injury.
In the next match against Afghanistan, Rahim continued his form but lost the match by 32 runs to an associate team for the first time as a test nation. His team also lost the match against Pakistan in that same tournament even after scoring 326 which was their highest ODI score, courtesy of Shahid Afridi's blitering knock. Later they lost to Sri Lanka in their last match of the series which made them lose all three matches.
Bangladesh qualified for the super 10s in the 2014 ICC World Twenty20, by winning two of their three matches in qualifying stage. But they were knocked out in the super 10s, having lost all the four matches.
Bangladesh toured the West Indies in August 2014. During the first test, Mushfiqur scored 116 in the second innings, picking up his third test century. However, they lost all three ODIs and two test matches.
In September 2014, BCB appointed Mortaza as the ODI captain while Rahim still remained to be the skipper in test formats for Bangladesh. In 2014, against Zimbabwe in November 2014, Bangladesh whitewashed Zimbabwe in both the three tests and five ODIs. He was also awarded the man of the series for the ODI matches.
In March 2017, during the second Test against Sri Lanka, Rahim took his 100th dismissal as a wicket-keeper. He became the first wicket-keeper for Bangladesh to reach this milestone.
During the first test against New Zealand at Basin Reserve, Rahim was hit on the back of the helmet on the fifth day of match and immediately taken to hospital. The incident took place in the 43rd over of Bangladesh's second innings when Tim Southee bowled a bouncer that hit Rahim just behind left ear as he was trying to duck. Initial X-rays and scans to his neck suggested he was out of immediate danger. Rahim attended to the post match presentation after the treatments.