I hope this question isn't too general, but I'm new to using maps, I'd like to make a map of one country on which I can plot points according to their geocodes from my mysql database, and to have the administrative districts outlined, like on google maps api, except I have read that google maps doesn't allow you to show just one country, and also, I'd like to use a free api if possible.

How do you do it?
Well, if you have large volumes of data, make a tiled map. Perhaps use TileMill and MapBox to make this easy. If you have a small amount of data, you could just make a vector map. Save your data as JSON and you can load it up in Leaflet.

You could do this by creating a client-side map using OpenLayers with a Google base layer and setting the restrictedExtent property to a bounding box covering the country you want to display. I don't think that violates the Google terms (if that's what you mean).

For the map server, MapServer has MySQL support. GeoServer has MySQL support as an add-on, but it is not currently maintained.