Vinegar is my first answer. For tough stains, try a product called Scouring Stick. It's pumice and works great. You can get it at Walmart.
Here's a post that might help - https://www.thespruce.com/hard-water-stains-in-the-toilet-2719033
I'd recommend starting with CLR - you can find it at any hardware store or here: https://amzn.to/2OZ7a8F
Use a pumice stone to scrub. It does not scratch the porcelain but will remove tough stains!
Lysol Lime & Rust Remover Toilet Bowl cleaner, comes in a black squirt bottle. Scrub with Scrub Daddy or Mr. Clean Magic Eraser. If stubborn, use a scouring stick to scrub.
A pumice stone works wonders. It won't scratch you toilet even though it looks like it will
Hi Martie: First of all, get something to hold the ball cock or whatever you have in the tank, and flush the toilet. You don't want the tank to fill back up. Then, flush again to get the water out of the toilet. Once the water is out of the toilet, put some paper towels on the inside of the toilet, covering all of the stained or dirty surfaces, and spray with Clorox. Let it sit for a while, and maybe spritz the paper again, until the toilet is clean. Remove the paper towels and throw them in the trash. Don't flush them! Then, remove whatever you have holding the ball cock and let the tank fill up. Flush to get the toilet to fill up. After this, get a mirror and check under the rim to be sure that the holes where the water comes in are clean. If not, use a nail (it's not porcelain in there) to carefully clean out any mineral or rust by wiggling it around. You can spray L.A.s Totally Awesome Lime, Rust and Calcium Remover up there and let it sit for a bit. You can get that at the dollar store. Don't use it at the same time as the Clorox, though, you may get some fumes that are harmful. Flush and you should be good to go. Good luck