Login

MySQL django password function

Author:
mcosta
Posted:
June 1, 2009
Language:
SQL
Version:
Not specified
Score:
2 (after 2 ratings)

This functions encodes a password in the same format as django. You can set the auth_user.password column with the result of this function:

update `auth_user`.`password`
set `password` = django_password('secret')
where id = 1234;
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
DELIMITER //
CREATE FUNCTION django_password(
  pass VARCHAR(32)
) RETURNS VARCHAR(128) 
DETERMINISTIC
BEGIN
	DECLARE salt char(5);
	DECLARE hash VARCHAR(40);
	SET salt = MID(RAND(), 3, 5);
	SET hash = SHA(CONCAT(salt, pass));
	RETURN CONCAT('sha1$', salt, '$', hash);
END//

More like this

  1. create_template_postgis-ubuntu_lucid by clawlor 14 years, 3 months ago
  2. PostgreSQL fulltext with language translations by diverman 14 years, 4 months ago
  3. Drop all tables in MySQL database by mpasternacki 14 years, 10 months ago
  4. grep and delete sqlite tables by kifkif 15 years ago
  5. Substitute hyphens with spaces to enale URLs to reference to multi-word tags by miernik 15 years, 1 month ago

Comments

mcosta (on June 1, 2009):

Note the deterministic behaviour from the manual:

A routine that contains the NOW() function (or its synonyms) or RAND() is non-deterministic, but it might still be replication-safe. For NOW(), the binary log includes the timestamp and replicates correctly. RAND() also replicates correctly as long as it is called only a single time during the execution of a routine. (You can consider the routine execution timestamp and random number seed as implicit inputs that are identical on the master and slave.)

#

gamesbook (on October 27, 2010):

How would you make use of this inside of Django (and Django Admin) i.e. where would you add the SQL?

#

Please login first before commenting.