I assume by Y axis, you mean the up / down rotation. If not, this would still apply, though.
You can simply use the method CFrame:ToOrientation() to return a tuple (3 approximate angles representing the rotation for each axis) and only take use of the rX (up/down) rotation from the LookAt CFrame while preserving the rZ (tilt left/right) and rY (left/right) rotations from the Part’s CFrame.
Example:
local rX, _, _ = CFrame.new(Part.CFrame.p, Mouse.Hit.p):ToOrientation() -- For reference, this is the LookAt CFrame
local _, rY, rZ = Part.CFrame:ToOrientation()
Part.CFrame = CFrame.new(Part.CFrame.p) * CFrame.fromOrientation(rX, rY, rZ)