I can see this question is old, but it's a fairly common issue worth a standard answer.
Quaternion.LookRotation gives us a convenient way to say "point this way" but the problem is that it wants to point the z+ axis in the given direction - usually not what we want in 2D.
Fortunately we can correct for this, taking advantage of the second argument (usually used to control the "up" vector or twist of the resulting rotation)
To point the local y+ axis toward something, keeping z+ pointing into the screen:
Vector3 offset = target.position - transform.position;
transform.rotation = Quaternion.LookRotation(
Vector3.forward, // Keep z+ pointing straight into the screen.
offset // Point y+ toward the target.
);
To point the local x+ axis toward something, keeping z+ pointing into the screen:
Vector3 offset = target.position - transform.position;
// Construct a rotation as in the y+ case.
Quaternion rotation = Quaternion.LookRotation(
Vector3.forward,
offset
);
// Apply a compensating rotation that twists x+ to y+ before the rotation above.
transform.rotation = rotation * Quaternion.Euler(0, 0, 90);
Of course in both cases, instead of setting transform.rotation
directly, you can store the target rotation and blend (Lerp/Slerp/RotateTowards) this value over multiple frames for a smoother/more controllable result.