My application let customers to transmit files to one another. Regular customers can edit their contacts, change password, etc. Additionally, admin customers can also addOreliminate customers and examine the log of the items happened. My question is how you can store this sign in MySQL database ?

I figured to keep the log such as this:

log_id   time   user_id   action_type                      description
------   ----   -------   ----------------   ----------------------------------------
   1     ....      4      User added         Added new user: alex
   2     ....      1      Contact added      Added contact Paul to group Family 
   3     ....      1      User removed       Removed user: gabrielle 
   4     ....      3      Files sent         Sent files 3,5,7,14 to contacts 2,4,8
   5     ....      8      Group added        Added new group: Family 
   6     ....      8      Password changed   
   7     ....      8      First Name changed Changed First Name from Michael to Misha       

What kind will be the perfect for action_type ? Since new action_types might be put in future, I figured that ENUM will not be the ideal choice. And So I thought to really make it VARCHAR(..), like description.

Is appears reasonable ?

I'll be pleased to hear any comments / suggestions.

If you are worried about adding additional action types, create a separate table to keep your action types and and join it for your logs table having a foreign key:

logs table:

log_id   time   user_id   action_type_id     description
------   ----   -------   ----------------   -----------------------------------
   1     ....      4            1            Added new user: alex
   2     ....      1            2            Added contact Paul to group Family 

action_types table:

id    name
---   ---------------
1     User added
2     Contact added