Mushfiqur, however, will continue to lead the Test side, Bangladesh Cricket Board president Nazmul Hassan announced after a BCB directors' meeting.
"Mushfiq (Rahim) is our best batsman at the moment. At the same time he also needs to lead the team and do the wicketkeeping job. This is a tremendous pressure for him," Nazmul told reporters.
"So we relieved him of some of his duties. Mashrafe will now lead the one-day international (ODI) side and Mushfiq will continue as the Test captain."
The decision follows the team's return from a disastrous tour of the West Indies where Bangladesh lost all the completed contests against their hosts in both Test matches and ODIs.
Mashrafe was put in charge only for the five-match ODI series against Zimbabwe, who will arrive in late October for a tour which will also include three Tests.
"You all know Mashrafe is an injury-prone player, so we cannot set a long-term plan with him. If he stays fit we will think about giving him captaincy for the World Cup 2015," said Nazmul.
He is, however, a regular in ODI and Twenty20 formats barring a few injury-related breaks.
The 31-year-old led Bangladesh in two Twenty20 Internationals against Sri Lanka earlier this year.
Mushfiqur was appointed captain in 2011 after a tour of Zimbabwe.
He led Bangladesh in 16 Tests, 37 ODIs and 23 Twenty20 Internationals.
Last year he was appointed captain of the Bangladesh team until the World Cup 2015.
