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.