Since SELECT is an atomic operation, I don't think, that there is an easy solution. I also see two different problems that need to be solved:
selecting a single row without repeating a shown one. Basically you need to store the last line showed somewhere. If you have some application, that stores the current state, it might be an option, to save it as an external variable. The sketched solution is done in MySQL 5.0+:
First prepare a statement that will be executed later on and set a initial position for the query:
PREPARE STMT FROM 'SELECT id, name FROM customer LIMIT ?, 1';
SET @pos = 0;
You might want to add a defautl ordering to get a reliable result.
Each time you want to get a single row, execute the statement by
EXECUTE STMT USING @pos;
SELECT count(*) FROM customer INTO @max;
SET @pos=(@pos+1)%@max;
The other thing is, that you want to read a random position. The only solution that I see right now, is to create a temporary table that either holds the content from customer ordered by random or that you create a temporary table holding all numbers from 0..@max and read the current position in the main table from the temporary table. If you have an application outside MySQL there might be more elegant ways to solve this.