Shakib, who is already the national Twenty20 captain, takes over the Test side after a disastrous tour of South Africa in a move that the cricket board said would allow Mushfiqur to focus on his batting.
"We have decided to change the Test captain. Shakib will be our new Test skipper from the upcoming series and Mahmudullah will be the vice-captain of the side," Bangladesh Cricket Board president Nazmul Hasan told reporters here following a Board of Directors' meeting.
Mushfiqur led Bangladesh in 34 Tests since 2011, guiding them to some remarkable wins over England, Sri Lanka and Australia since last year.
But the wicketkeeper-batsman fell from grace after a disastrous tour in South Africa where Bangladesh lost both Tests by heavy margins.
More From This Section
Hasan said the decision to remove Mushfiqur as Test captain was taken as they wanted him to concentrate on his batting.
"We want best batting service from Mushfiqur. We want him to concentrate on his batting, want to free him from pressure," he said.
Shakib, who took the helm of the national Twenty20 side from Mashrafe Mortaza in South Africa, takes charge of the Test squad for the second time, having led the side in nine Tests between 2009 and 2011.
Mortaza remained at the helm of one-day international side but the BCB president indicated they would make a few other changes in near future.
"Overall, we are willing to make a plan for next four to five years and the decision is just the beginning of the new plans," he said.
Bangladesh faced a huge backlash at home after they failed to win a single match in any format during their South Africa tour.
Coach Chandika Hathurusingha resigned in the middle of the series but Bangladesh was yet to name his successor.
Bangladesh are scheduled to play a tri-nation One-Day International tournament involving Sri Lanka and Zimbabwe in January before hosting the Sri Lankans for the two-Test series and as many Twenty20 internationals.