Assuming a starting table like this:
mysql> SELECT * FROM test;
+------+------+
| col1 | col2 |
+------+------+
| a | 1 |
| b | 2 |
| c | 1 |
| d | 3 |
+------+------+
... you can get the result you want by doing this:
mysql> SELECT col1, col2, @a := @a + col2 AS col3
-> FROM test JOIN (SELECT @a := 0) t
-> ORDER BY col1;
+------+------+------+
| col1 | col2 | col3 |
+------+------+------+
| a | 1 | 1 |
| b | 2 | 3 |
| c | 1 | 4 |
| d | 3 | 7 |
+------+------+------+
4 rows in set (0.00 sec)
If you reverse the order, you get the results according to your problem statement, i.e. col2 plus the previous col3 in the order displayed:
mysql> SELECT col1, col2, @a := @a + col2 AS col3
-> FROM test JOIN (SELECT @a := 0) t
-> ORDER BY col1 DESC;
+------+------+------+
| col1 | col2 | col3 |
+------+------+------+
| d | 3 | 3 |
| c | 1 | 4 |
| b | 2 | 6 |
| a | 1 | 7 |
+------+------+------+
4 rows in set (0.00 sec)