Ok, I'm years late to the party, but the reason the texture is rotated is because it's applying the mapping using the X, Y, and Z coordinates equally. If you want to constrain it to a single axis, you can just use a "SeparateXYZ" node followed by a "CombineXYZ" node and only use the axes you want. For example, as gandalf3 pointed out, if you want the texture aligned along the Z-axis, simply connect the Z output of the SeparateXYZ node to the Z input of the CombineXYZ node.

Likewise, if you want it to follow the X-axis, connect only the X output to the X input. If you choose both Y and Z, your texture will be at a 45-degree angle because it's affected half by the Y coordinate, and half by the Z. You can also think of it bisecting the axes you use.

That's why when you use X, Y, and Z all at once, it points at exactly the center between the X, Y, and Z axes. You might think that's 45 degrees from each axis, but it's not. Since the rotations are applied on top of each other, you get the "weird" values of 35, 45, and 90 degrees (look up Euler angles if you want more info). It's not a mystery once you understand the math (or at least how the math works).