title: MySQL encrypted columns
body: <p>Say each row in a table has data pertaining to one particular user. The user has a password to access the system.</p>
  
  <p>How do I encrypt a column of data using InnoDB so that no one other than the user who's data it is can read the data ? I was thinking of something like using one of the MySQL encryption functions (say AES) with a key based on a hash calculated from the user's password.</p>
  
  <p>Does any one have any pointers to how I could do this ? Am I on the right track ?</p>
  
  <p>One of the answers below</p>
  
  <blockquote>
    <p>The issue of modifying user's password involves re-encrypting the user key by means of the new password which is much more straight forward than re-encrypting the whole bunch of user's data that can be arbitrarily large. The user key remains the same accross the life of the user data in the system.</p>
  </blockquote>
  
  <p>How does this help ? Say the password is pass1. And there are a bunch of records encrypted with a key generated from this. If the user now resets the password to pass2, I have no way of decrypting the data that was encrypted using pass1. In the case of a user forgetting the password entirely, all his encrypted data will be lost.</p>