Controlling a 5W 12V DC water pump
My reccomendation for this would be using 'Current control' not voltage control using a MOSFET, and POTENTIOMETER:
See: How to build the simplest DC Motor Speed Controller(Using Potentiometer and MOSFET)Updated
Alternatively You could use an adjustable DC-to-DC control module to set the voltage, however this will have a small dropout voltage which may not be desirable du to the reduction in maximum voltage output.
You could use a large, high-power potentiometer, but this is expensive.
If you are using a uController, then PWM control of the Motor will be an easy task. You would likely just need a MOSFET, uController (eg arduino) and a diode.