Salt defeats lookup
A salt makes each user's hash unique, so a thief cannot hash a list of common passwords once and match every account. The salt is stored in the digest, not hidden. Its purpose is to stop bulk reversal, not to be secret.
Per-user, not global
A fresh random salt per password is right. A single global salt still lets one hash match many accounts. bcrypt generates the salt for you, so you rarely write it; the mistake is reaching for a fast hash instead.