원래 백제의 발라군(發羅郡, 또는 通義)이었는데, 신라의 경덕왕 때 비로소 금산군(錦山郡) 또는 금성이라 고치고 회진(會津)·철야(鐵冶)·여황(艅艎) 등을 영현(領縣)으로 하였다.
940년(태조 23) 나주(羅州)로 고치고, 983년(성종 2) 나주목(羅州牧)으로 격상시켜, 전국 12목 중 하나가 되었다. 995년 절도사(節度使)를 두고 진해군(鎭海軍)이라 하고 해양도(海陽道)에 예속시켰다. 1010년(현종 1) 현종은 거란을 피하여 잠시 이곳에 행차하여 10여 일간 머무르다가 환도하였다. 1018년 목으로 승격되었다.
조선시대에도 그대로 하였고, 이웃 여러 군·현을 거느렸으며, 세조 때 진(鎭)이 설치되었다. 1645년(인조 23) 향리(鄕吏)가 목사 이갱생(李更生)을 구타하는 사건이 일어나 금성현(錦城縣)으로 격하시켰다. 금성이라는 이름이 두 번째로 쓰인 것이다. 그 뒤 나주로 환원되고 현을 되풀이하였다.