在黑水洋之役中时为浙江提督的李长庚为了戴罪立功，在兵船不足情况下，追剿蔡牵的座船，李长庚在船头击鼓，被蔡牵船上一名与李长庚同乡的林阿小认出，敌兵纷纷砲轰，李长庚在战斗中被砲弹击毙。嘉庆十三年（1808年）正月，王得禄接替李长庚，担任浙江提督，专门防范蔡牵。六月，嘉庆见原本的福建水师张见陞因剿贼怠慢，改调王得禄担任。嘉庆十四年（1809年）八月，王得禄与邱良功在鱼山外海与追剿蔡牵，蔡牵用大碇使邱良功的船无法动弹，王得禄则在后穷追勐打蔡牵将其击沉，蔡牵命丧海底。王得禄因平乱有功，诏任福建水师提督（紫禁城