Database layout to keep track of the "freshness" of a column value in a specific row
With MariaDB 10.3 you can use system-versioned tables.

You can then see all the versions of a particular row with a query like:

SELECT *, ROW_START, ROW_END FROM Person WHERE id = 4 FOR SYSTEM_TIME ALL;


Also, with the AS OF syntax you can get the version of the row that existed at a particular time:

SELECT * FROM Person WHERE id = 4 FOR SYSTEM_TIME AS OF TIMESTAMP '2019-08-08 15:10:00';


See also this post in the MariaDB blog: Automatic Data Versioning in MariaDB Server 10.3.

EDIT

If you need to know who made a change, this will probably have to be controlled through your software. You can add a special last_change_by column in the table e.g. something like:

ALTER TABLE Person ADD last_change_by varchar(100);