Проверьте число макс. соединений и потоков (процессов на линуксе) MySQL. Сами понимаете, что каждый из требует память.
Проверьте выставленные значения key_buffer_size (исп. MyISAM, один буфер на все потоки), thread_stack (стек нужен каждому потоку), net_buffer_length (свой у каждого потока), read_buffer_size (у каждог опотока свой), read_rnd_buffer_size, sort_buffer, pool_buffer_size, как вам выше написали.
Вообще, MySQL довольно предсказуемая система и ест столько памяти, сколько ей скажут. Ссылочка
dev.mysql.com/doc/refman/5.0/en/memory-use.html вам в помощь.
Перестаньте пользоваться нехорошему вещами, вроде JOIN или fulltable row scan на больших таблицах. Они все тоже едят память, да еще как.