Given an axis vector "axis" and a radius "r". You first need to construct an orthonormal set of coordinate axes.
{vz, vx, vy} = Chop@Orthogonalize[{axis, {1, 0, 0}, {0, 1, 0}}]
Now, given a base point "b" and a height "h" the plot can be constructed with:
Show[ParametricPlot3D[b+z*vz+r*Cos[\[Theta]]*vx+r*Sin[\[Theta]]*vy,{z,0,h},{\[Theta],0,2\[Pi]},PlotStyle->Directive[Opacity[0.7],Orange]],
Graphics3D[{Blue,PointSize[0.02],Point[b],Arrow[{b,b+h*vz}], Magenta,Arrow[{b,b+r*vx}],Green,Arrow[{b,b+r*vy}]}]]
This will also show the cylinder axis in blue, with the other two axes in Magenta and Green.