Lasith Malinga struck twice in the first over to leave the Tigers 1-2, but Mushfiqur's sixth ODI century took them to 261 all out from 49.3 overs.
Sri Lanka were 124 all out in the 36th over, Dilruwan Perera (29) top-scoring.
The Asia Cup features six teams divided into two groups, with the top two from each advancing to a round-robin Super Four phase, with a final to follow.
The second match of the competition sees Hong Kong, who are yet to beat a major nation in their 24 ODI matches since 2004, face Pakistan on Sunday.
Malinga, now regarded as a T20 specialist at the age of 35, stunned Bangladesh after they opted to bat first at the Dubai International Stadium.
Playing his first ODI since September last year, he had Liton Das caught at slip with the fifth ball of the tournament, then found some late swing to squeeze through Shakib al Hasan's bat and pad and flatten the left-hander's stumps.
Bangladesh's problems worsened at the end of the next over when Tamim Iqbal was forced to retire hurt after being hit on the wrist by a delivery from Suranga Lakmal.
But Mushfiqur, dropped on 10 and 85, added 131 with Mohammad Mithun (63) and reached his hundred in the 44th over.
When Mustafizur was out in the 47th over, Tamim returned to bat with one hand, allowing Mushfiqur to hit successive sixes and make his highest ODI score before he was superbly caught on the boundary to end the innings with three deliveries unused, Malinga finishing with 4-23.
Sri Lanka raced to 21-0 after only 10 balls of their reply but by the 10th over were 38-4.
Just three batsmen reached 20 for Angelo Mathews' side as Bangladesh recorded only their seventh win in 45 ODI matches against Sri Lanka.