원래 고구려의 만년군(萬年郡)인데, 994년(성종 13) 성종이 평장사(平章事) 서희(徐熙)에게 명하여 이곳에 살던 여진족을 내쫓고 성을 쌓아 구주라 칭하여 강동육주(江東六州)의 하나가 되었다.
1018년(현종 9) 방어사(防禦使)를 두었고, 1231년(고종 18) 몽고병의 침입을 박서(朴犀)가 잘 격퇴시켰다고 하여 정원대도호부(定遠大都護府)라 개명, 격상시켰다. 그 뒤 도호부가 되고 다시 정주목(定州牧)이라 고쳤다.
1455년(세조 1) 옛 구주는 전략상 유리한 요해지(要害地)라 하여 구성군을 따로 만들었다. 그 뒤 도호부로 승격시키고 진(鎭)을 두었으며 약 500년간 큰 변동은 없었다.