Yes, it is the case that only 60mb is free, but this is normal, as linux is designed to use as much available memory there is to maximise performance through caching.
Any memory used for caching is freed when needed by an application.
So there is a difference between memory that is "free" as in, currently unused, and memory that is "available", which may be used for something, but can be given to an application as needed.
The "available" memory is the one that is important, and it is the last number after
-/+ buffers/cache:. In your case, 806MB.
With MySQL and dodgy scripts, that memory can be consumed fairly quickly.
I would suggest adding some swap space so that if you do run out, your machine doesn't start terminating processes, but can expand into disk backed storage for "additional" memory. This means it would start going slowly rather than breaking.
Create a swap file:
# dd if=/dev/zero of=/swap.tmp bs=1M count=1024
This will create an empty file of 1024MB
# mkswap /swap.tmp
This turns the file into something that can be used for swap space.
This will enable the swap space - take a look at
free to see the difference.
/etc/fstab and make sure swap is enabled at boot by adding this line (after root is mounted):
/swap.tmp none swap defaults 0 0