Due to differing needs and requirements this is difficult to answer except on a case by case basis. The MySQL website has a section regarding general security of a MySQL database available here: http://dev.mysql.com/doc/refman/5.0/en/security.html
Additionally some good practices are:
- Verify your root MySQL account password is set
- the test account and database that were created during the initial installation
- Login to mysql as root, from the command prompt “shell> mysql –u root –p mysql” and enter the password when prompted
- mysql> drop database test;
- mysql> use mysql;
- mysql> delete from user where user='test';
- mysql> delete from user where user=';
- mysql> flush privileges;
- Make sure that each account has a password set
- Do not grant global privileges unnecessarily
- Avoid using wildcards in the hostname value associated with accounts
- Periodically review users and databases that are setup in MySQL
- Do not use passwords on the command line. From the command line you can login to MySQL using ""shell> mysql –u root –password=somepassword mysql"" the problem with this is anyone on the server could view your password with a simple process list command ""shell> ps"". The correct usage would be: ""shell> mysql –u root –p mysql"", from this MySQL will prompt your for your password and it will not show up in the process list as plain text.
Note: There are many excellent articles available on the web for MySQL security. Go to your search engine of choice and search “securing mysql” and you should have reading for weeks.