PDA

View Full Version : MySQL Privileges


mcfly
22nd May 2005, 13:43
I've a little problem: I have a script that writes the privileges of new MySQL users into the mysql.db table. Now it seems as if this table has changed from MySQL 3.23 to MySQL 4.0, i.e., there are now more privileges columns than before.

Now for MySQL 3.23 I'm running this command:

INSERT INTO `db` (`Host`, `Db`, `User`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`) VALUES ('localhost', 'database_name', 'database_user', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');

but for MySQL 4.0 I'd have to change it. But it's bothersome to program a routine that finds out which MySQL version is used or which privileges columns are available for the database in question in order to form the right SQL INSERT statement.
So my question is: is there an easier way to do this?

peter
22nd May 2005, 19:44
You can use MySQL's GRANT command:

GRANT ALL PRIVILEGES ON test_db.* TO 'test_db_user'@'localhost';
GRANT ALL PRIVILEGES ON test_db.* TO 'test_db_user'@'%';
GRANT ALL PRIVILEGES ON test_db.* TO 'test_db_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON test_db.* TO 'test_db_user'@'%' IDENTIFIED BY 'password';

You can find details about it here: http://dev.mysql.com/doc/mysql/en/grant.html

Peter

mcfly
23rd May 2005, 09:13
What's the IDENTIFIED BY 'password' for?

joe
24th May 2005, 02:34
It creates a password for the user you are granting privileges to. Just like normal shell accounts use passwords to protect privileges, the same goes for database users.

peter
26th May 2005, 19:00
if you use the
IDENTIFIED BY 'password' clause, and the user doesn't exist in the user table, it will be created with the specified password. If the user is already existing, its password will be changed.

Peter