Rylan's code is right, except that he's not using GRANT options:
Code:
GRANT ALL PRIVILEGES ON *.* TO myusername@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
You shouldn't need to use your grant usage statement.
However, you should update your mysql server before you go getting started with an old version. Install at least version 5.
Make sure you're doing this as a user with permissions to create full access users, like root unless someone's changed that.
You don't need the bind_address line either, that's only for servers that listen ONLY to a given address (usually localhost [127.])
If you can restrict the user to a given database and permissions set, that's obviously better than allowing complete control over your whole database server. As already mentioned, replace the *.* above with something like dbname.* (the two stars denote database.table)
If you can restrict to a given IP address/range that would be even better. % is a wildcard to MySQL (figure something like 'SELECT * FROM table WHERE something LIKE "%that%"'). For example, to restrict to a private LAN, you might do: myusername@'192.168%'
Of course, if you only need this open for internal communications (LAN to LAN), you should NOT have port 3306 open on your firewall - otherwise, you do need it open.
In case you've overly fudged your my.cnf, this one should work (it's default from FC6, but close enough)
Code:
[mysqld]
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
If you make changes to my.cnf, you have to restart mysql in order for them to take effect