python 用户认证_python基于mysql的用户认证
首先,创建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的用户认证相关推荐
- svn基于mysql认证_Svn基于mysql做登陆认证
不做权限控制的登陆认证 基础环境 Centos 6 Apache 2.2 Svn 1.6 Mysql 5.1 yum -y install mysql mysql-devel mysql-server ...
- linux ftp 团队认证,linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建
linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建 1.FTP协议:有命令和数据连接两种 命令连接,控制连接:21/tcp 数据连接: 主动模式,运行在20/tcp端口 和 ...
- linux ftp mysql_linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建
命令连接,控制连接:21/tcp 数据连接: 主动模式,运行在20/tcp端口 和 被动模式,运行在随机端口 数据传输模式(自动模式):有二进制(mp3,jpg等)和文本(html)两种传输模式 ft ...
- vsftp服务器mysql认证_基于mysql控制vsftp的用户认证机制
一.简介 vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以 ...
- 获取mysql所有用户权限_python 获取mysql数据库列表以及用户权限
#!/usr/bin/env python#coding: utf-8 importjsonimportpymysqlclassMysql(object):#mysql 端口号,注意:必须是int类型 ...
- emqx配置mysql认证,emqx使用mysql完成用户密码验证和ACL鉴权
emqx使用mysql完成用户密码验证和ACL鉴权 emqx使用mysql完成用户密码验证和ACL鉴权 摘要:前几篇博客介绍的是使用配置文件配置了ACL和客户端用户名密码配置实现生产环境下的安全登录和 ...
- python爬取微博用户关注_python爬取微博用户关注和粉丝的公开基本信息
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:TM0831 PS:如有需要Python学习资料的小伙伴可以加点击下 ...
- svn mysql认证_SVN基于MySQL认证
SVN的简介和工作原理 Subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件.Subversion支持linux和win ...
- python 并发 数据库_python写入mysql数据库
scrapy爬虫成长日记之将抓取内容写入mysql数据库 前面小试了一下scrapy抓取博客园的博客(您可在此查看scrapy爬虫成长日记之创建工程-抽取数据-保存为json格式的数据),但是前面抓取 ...
最新文章
- 专题 14 IPC之共享内存
- python函数式编程之functools、itertools、operator详解
- hexo部署在码云出现样式问题
- 基本类型赋值和普通对象赋值的不同
- 3.2_栈_链式存储结构(链表形式)
- C# 中的 gdi 而不是 gdi+
- Linux下mail服务器应用之邮件系统的安全性
- Python ln_虚拟机中单机Spark (Python版)安装
- swf转换mp4 linux,转换FLA文件,以.swf文件在Linux上
- python snownlp了解_分享python snownlp的实例教程
- 曾经用过的书生配置文档
- 互联网行业中,哪些职位比较有前途?
- 大一微积分笔记整理_大一下总结
- Java IDE - Selenium 包下载
- python setup.py build,无法执行“python setup.py build”命令..!
- R语言ggplot2可视化:使用patchwork包(直接使用加号+)将两个ggplot2可视化结果横向组合、接着再和第三个图像横向组合起来(三幅图各占比例为50%、25%、25%)
- 微信公众平台消息接口开发(30)大众点评商户信息团购及优惠券查询
- 网络存储服务器拷贝文件夹,【群晖 DS218+ 2盘位 NAS网络存储服务器使用总结】配置|做工|指示灯|copy键_摘要频道_什么值得买...
- openwrt 防火墙
- linux中sed怎么反选,awk的批量replace功能