首先,创建mysql用户users表

1

2

3

4

5

create table users (

id int NOT NULL primary key auto_increment,

username varchar(16) NOT NULL,

passwd varchar(32) NOT NULL

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

看下表结构:

1

2

3

4

5

6

7

8

9

mysql> desc users;

+----------+-------------+------+-----+---------+----------------+

| Field    | Type        | Null | Key | Default | Extra          |

+----------+-------------+------+-----+---------+----------------+

| id       | int(11)     | NO   | PRI | NULL    | auto_increment |

| username | varchar(16) | NO   |     | NULL    |                |

| passwd   | varchar(32) | NO   |     | NULL    |                |

+----------+-------------+------+-----+---------+----------------+

3 rows in set (0.02 sec)

接下来,插入测试数据,passwd字段用md5()加密保存

1

2

3

4

5

6

7

insert into users(username,passwd)

values

('zl', md5('zl')),

('zhangliang', md5('zhangliang')),

('root', md5('zl9053')),

('test', md5('test')),

('admin', md5('admin'));

查询一下刚刚插入的几条数据:

1

2

3

4

5

6

7

8

9

10

11

mysql> select * from users;

+----+------------+----------------------------------+

| id | username   | passwd                           |

+----+------------+----------------------------------+

|  1 | zl         | c28cbd398a61e9022fd6a6835a57dc50 |

|  2 | zhangliang | 1be558d6077347baaed6d4464495b360 |

|  3 | root       | bad149ab36b0887d21f1af59b544abba |

|  4 | test       | 098f6bcd4621d373cade4e832627b4f6 |

|  5 | admin      | 21232f297a57a5a743894a0e4a801fc3 |

+----+------------+----------------------------------+

5 rows in set (0.00 sec)

上代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

#!/usr/bin/env python

# -*- coding:UTF-8 -*-

# Filename: user_auth.py

# Author: zhangliang - z_liang90@126.com

# Last modified: 2014-02-27 14:52

# Description:

import hashlib

import MySQLdb as mysqldb

import datetime

from getpass import getpass

from sys import exit

_username = raw_input('Enter username:').strip()

if not _username:

print u'用户名不允许为空!'

exit()

try:

#connect db

conn = mysqldb.connect(host='localhost', user='root', passwd='123456', port=3306, charset='utf8')

#select db

conn.select_db('python')

#create a cursor instance

cur = conn.cursor()

#if user exists, reutrn 1

user_sql = "select 1 from users where username = '%s'" % _username

result = cur.execute(user_sql)

#user password auth

if result:

_password = getpass('Password:').strip()

if not _password:

print u'密码不允许为空!'

else:

#将用户输出的密码转换成md5

e = hashlib.md5()

e.update(_password)

_pwd = e.hexdigest()

pwd_sql = "select passwd from users where username = '%s'" % _username

cur.execute(pwd_sql)

ret_pwd = cur.fetchone()[0]

if ret_pwd == _pwd:

print u'%s, 认证成功! [ 登陆时间:%s ] ' % (_username, datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

else:

print u'密码不正确!'

else:

print u'用户名不存在!'

#close cursor, conn

cur.close()

conn.close()

except (mysqldb.MySQLError, Exception), e:

print 'Error: %s' % e

执行下程序,看看效果:

1

2

3

4

5

6

7

8

9

10

11

]# python user_auth.py

Enter username:root

Password:

root, 认证成功! [ 登陆时间:2014-02-28 14:53:14 ]

]# python user_auth.py

Enter username:ad

用户名不存在!

]# python user_auth.py

Enter username:admin

Password:

密码不允许为空!

阅读(1213) | 评论(0) | 转发(0) |

python 用户认证_python基于mysql的用户认证相关推荐

  1. svn基于mysql认证_Svn基于mysql做登陆认证

    不做权限控制的登陆认证 基础环境 Centos 6 Apache 2.2 Svn 1.6 Mysql 5.1 yum -y install mysql mysql-devel mysql-server ...

  2. linux ftp 团队认证,linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建

    linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建 1.FTP协议:有命令和数据连接两种 命令连接,控制连接:21/tcp 数据连接: 主动模式,运行在20/tcp端口 和 ...

  3. linux ftp mysql_linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建

    命令连接,控制连接:21/tcp 数据连接: 主动模式,运行在20/tcp端口 和 被动模式,运行在随机端口 数据传输模式(自动模式):有二进制(mp3,jpg等)和文本(html)两种传输模式 ft ...

  4. vsftp服务器mysql认证_基于mysql控制vsftp的用户认证机制

    一.简介 vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以 ...

  5. 获取mysql所有用户权限_python 获取mysql数据库列表以及用户权限

    #!/usr/bin/env python#coding: utf-8 importjsonimportpymysqlclassMysql(object):#mysql 端口号,注意:必须是int类型 ...

  6. emqx配置mysql认证,emqx使用mysql完成用户密码验证和ACL鉴权

    emqx使用mysql完成用户密码验证和ACL鉴权 emqx使用mysql完成用户密码验证和ACL鉴权 摘要:前几篇博客介绍的是使用配置文件配置了ACL和客户端用户名密码配置实现生产环境下的安全登录和 ...

  7. python爬取微博用户关注_python爬取微博用户关注和粉丝的公开基本信息

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:TM0831 PS:如有需要Python学习资料的小伙伴可以加点击下 ...

  8. svn mysql认证_SVN基于MySQL认证

    SVN的简介和工作原理 Subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件.Subversion支持linux和win ...

  9. python 并发 数据库_python写入mysql数据库

    scrapy爬虫成长日记之将抓取内容写入mysql数据库 前面小试了一下scrapy抓取博客园的博客(您可在此查看scrapy爬虫成长日记之创建工程-抽取数据-保存为json格式的数据),但是前面抓取 ...

最新文章

  1. 专题 14 IPC之共享内存
  2. python函数式编程之functools、itertools、operator详解
  3. hexo部署在码云出现样式问题
  4. 基本类型赋值和普通对象赋值的不同
  5. 3.2_栈_链式存储结构(链表形式)
  6. C# 中的 gdi 而不是 gdi+
  7. Linux下mail服务器应用之邮件系统的安全性
  8. Python ln_虚拟机中单机Spark (Python版)安装
  9. swf转换mp4 linux,转换FLA文件,以.swf文件在Linux上
  10. python snownlp了解_分享python snownlp的实例教程
  11. 曾经用过的书生配置文档
  12. 互联网行业中,哪些职位比较有前途?
  13. 大一微积分笔记整理_大一下总结
  14. Java IDE - Selenium 包下载
  15. python setup.py build,无法执行“python setup.py build”命令..!
  16. R语言ggplot2可视化:使用patchwork包(直接使用加号+)将两个ggplot2可视化结果横向组合、接着再和第三个图像横向组合起来(三幅图各占比例为50%、25%、25%)
  17. 微信公众平台消息接口开发(30)大众点评商户信息团购及优惠券查询
  18. 网络存储服务器拷贝文件夹,【群晖 DS218+ 2盘位 NAS网络存储服务器使用总结】配置|做工|指示灯|copy键_摘要频道_什么值得买...
  19. openwrt 防火墙
  20. linux中sed怎么反选,awk的批量replace功能

热门文章

  1. java mp3播放器 无界面
  2. 神秘粒子可让硬盘体积缩至花生米大小
  3. cmd for 循环拷贝文件
  4. CSS3的边框(border)属性-radius
  5. Alt + sysrq + REISUB doesn't reboot my laptop
  6. 工作总结 -- 插件篇 目录
  7. 2011最新个人所得税计算器---起点3500元
  8. 如何做好SOC的一点点体会
  9. 给SAP系统安装联机帮助(事务码SR13)
  10. springboot+vue前后端分离实现宿舍管理系统