Generally speaking, you have two choices:
A 'natural key' that reflects the reality of the data you are working with.
For example, a telephone number might be a valid primary key for a calling list, but it would not be appropriate at all for, say, a list of health care beneficiaries because many people might share the same phone number in a home. Note that a natural key might be made up of more than one field. For example, the combination of Make, Model, and Year might be a key for a list of automobile models.
A 'surrogate key' on the other hand, is just an arbitrary value that you assign to a row. If you go that route, I'd recommend using a GUID (UUID in MySql). The best way that I know to represent those in MySQL is with a char(36) column. GUIDs are effectively unique forever and can be used infinitely.
If you insist on using a plain old number, then INT is probably fine, or you can use BIGINT to be really sure.
BIGINT UNSIGNED ZEROFILL