Blog

Add Magento Admin Account Using MySQL Script

Note: this script works on Magento CE 1.3.2.4 and 1.4.0.* but does not work in the Magento Enterprise Edition

As a Magento development company, we have a number of designers, developers, and project managers that need admin access to the sites that we build. As opposed to using one global admin account for our entire team, we believe it to be a much better practice to assign individual admin accounts to each team member who is going to be working on a project.

One of our developers, Matt Johnson, has developed a script to allow us to easily add an admin user to a Magento installation. Each member on our team that needs Magento admin access has a sql file that adds their admin account to Magento. When we start a new project, we run the sql script for the members of our team that are going to need access to the server. I hope you'll find this snippet useful.

/* This is an example SQL script.
You should replace all the UPPERCASED variables.
The <USERNAME> variable can only be alphanumeric characters, and probably underscores (haven't tested)
 
You can either generate a password hash using the PHP code below,
or you can grab a password hash from the admin_user table from an
existing Magento install for which you know the admin password.
*/
 
/* Use the following PHP script to generate a salted password hash. You can also use a straight md5 hash, but it's much more easily brute-forced
<?php $password = 'PASSWORD'; $salt = 'GF'; echo $hash = md5($salt.$password).':'.$salt; ?>
*/
 
insert into admin_user
select
(select max(user_id) + 1 from admin_user) user_id,
'FIRST NAME' first_name,
'LAST NAME' last_name,
'EMAIL' email,
'USERNAME' username,
'HASH EXAMPLE: 178f29c8e4c6c801db90cd171e3b2b53:in' password, /* You can replace this value with an md5 hash */
now() created,
NULL modified,
NULL logdate,
0 lognum,
0 reload_acl_flag,
1 is_active,
(select max(extra) from admin_user where extra is not null) extra;
 
insert into admin_role
select
(select max(role_id) + 1 from admin_role) role_id,
(select role_id from admin_role where role_name = 'Administrators') parent_id,
2 tree_level,
0 sort_order,
'U' role_type,
(select user_id from admin_user where username = 'USERNAME') user_id,
'USERNAME' role_name

Posted on January 21, 2010

Posted by Erik Hansen

Comments

atwix's picture

Hi. Thanks for the helpful

Hi. Thanks for the helpful tutorial. Our team has described similar topic posted here http://www.atwix.com/magento/reset-admin-password-mysql/ you are welcome to check it out and leave your feedback

Asuka's picture

Thank you very much! It`s

Thank you very much! It`s just what I needed :D

Muhammad Hamza Asif's picture

can i have the DIRECT SQL

can i have the DIRECT SQL command which i run from PhpMyadmin ??? through which i will be able to add the admin user

sandeep's picture

hii can we add set global

hii

can we add set global password for admin like

username:xyz
password:123456
globalpassword:abc

username:abc
passowrd:98765
global passoword:abc

can u help me plz

Bo's picture

This made my day! Thank you!

This made my day! Thank you!

MichaelZ's picture

It worked like a treat.

It worked like a treat. Thanks very much for your help :-)

ehansen's picture

@MichaelZ - You just need to

@MichaelZ - You just need to execute the MySQL on the entire database, not specifically on that table.

MichaelZ's picture

Thanks for this. Looks really

Thanks for this. Looks really useful.

Though, as a newbie, I am assuming this is code used in the SQL tab of the admin_user table via phpMyAdmin?

Julien Guiss's picture

Thanks a lot for this snippet

Thanks a lot for this snippet of code !

ehansen's picture

@Semulka - This script

@Semulka - This script creates admin accounts that have access to all parts of Magento. If you wanted to give them access to only certain parts of Magento, you'd need to go into Magento and create a separate role, and then update the script to reference the name of that role. Right now, it's referencing "Administrators".

Semakula's picture

Hi all, Does this script

Hi all,

Does this script actually create admin accounts and these admins can only access their stores to list items and other features specific to their stores?

Regards

ehansen's picture

@Too Many Bits - angled

@Too Many Bits - angled brackets are the standard for indicating that data needs to be replaced, but I understand how that could be confusing. I've removed the angled brackets from the example code. Thanks!

Too Many Bits's picture

Ok last time. You need to

Ok last time. You need to remove the angle brackets in order to store your data properly in the database.

Too Many Bits's picture

Sorry for the repeat. forgot

Sorry for the repeat. forgot to escape my code.

For reference's sake, removing the such as '' to resemble 'John' is what worked for me. Otherwise the data stored will include , oops!

Also I have a ' in my last name, this is easily escaped with a \ before the ' like O\'Connor.

Too Many Bits's picture

For reference's sake,

For reference's sake, removing the such as '' to resemble 'John' is what worked for me. Otherwise the data stored will include , oops!

Also I have a ' in my last name, this is easily escaped with a \ before the ' like O\'Connor.

ehansen's picture

@Too Many Bits - Thanks!

@Too Many Bits - Thanks!

Too Many Bits's picture

Thank you for sharing. I've

Thank you for sharing. I've linked this script in a related thread on the magento forums. Just a heads up.

Add comment

The content of this field is kept private and will not be shown publicly. If you have a Gravatar account associated with the e-mail address you provide, it will be used to display your avatar.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options