用户权限管理、pymysql模块

一、用户管理(权限管理)

在MySQL中自带的mysql数据库中有4个表用于用户管理的

# 优先级从高到低
user > db > tables_priv > columns_priv
user #该表放行的权限,针对:所有数据,所有库下所有表,以及表下的所有字段
db #该表放行的权限,针对:某一数据库,该数据库下的所有表,以及表下的所有字段
tables_priv #该表放行的权限。针对:某一张表,以及该表下的所有字段
columns_priv #该表放行的权限,针对:某一个字段
# 1.创建用户      主机号是客户端的主机地址,% 代表任意一条主机
create user 用户名@"主机地址" identified by '密码';
eg:create user tom@'localhost' identified by '';

# 2.授权 []中为可选内容,with grant option 是给用户添加授权权限,all 代表所有除了grant以外的权限。若是用户名不存,则会先创建该用户名,再授权。
grant [权限名字:select、insert、update……、all] on 数据库名.表名 to 用户名@"主机地址" [with grant option];
      # 权限可以是授予数据库、表、某些字段的权限
eg: grant all on mydb.* to tom@'127.0.0.1'
grant all on mydb.teacher to tom@'127.0.0.1' with grant option

# 3.解除授权
revoke [权限名字:select、insert、delete……all] on 数据库名.表名 from 用户名@"主机地址";
eg:revoke select on mydb.* from tom@'127.0.0.1';

# 4.删除用户
drop user 用户名@"主机地址"

二、pymysql模块

pymysql模块用于Python程序与MySQL的连接

#安装
pip3 install pymysql

1、查询

# 1.连接数据库,创建连接,获得一个连接对象
conn = pymysql.Connect(
host='127.0.0.1', # 主机地址
user='root', # 用户名
password='hf19970124', # 密码
database='mydb', # 数据库名称
port=3306, # 端口号 可选
charset='utf8' # 编码 可选
) # 2.获取游标对象,游标封装的读和写的操作
cursor = conn.cursor(pymysql.cursors.DictCursor) # pymysql.cursors.DictCursor指定返回的结果为字典,不写默认为元组 # 3.查询语句
sql = "select * from teacher where name-'%s' and password = '%s'%('tom','123')" # 注意%s需要加引号,并且单引号、双引号的嵌套使用 # 4.执行sql语句,如果是查询,返回查询的条数
res = cursor.execute(sql)
print(res) # 5.获取查询的结果
print(cursor.fetchall())
# print(cursor.fetchone()) # 6.关闭连接
cursor.close()
conn.close()
2、fetchall、fetchone、fetchmany与scroll
fetchall、fetchone、fetchmany 用于获取查询结果
scroll 用于设置游标的位置
cursor.fetchall()   # 获取所有的结果
cursor.fetchone() #获取结果中的第一条数据,取出一天,游标的位置就往下移一个,下一次取从新位置开始
cursor.fetchmany(size) # 获取size条数据 # scroll 可用于设置游标的位置
cursor.scroll(1,mode='relative') # 相对位置,游标位置从当前位置后移一个,下一次取结果,从第二条数据开始
cursor.scroll(-1) # 默认为相对位置,游标位置从当前位置退一个
cursor.scroll(3,mode='absolute') # 绝对位置,游标位置从头开始移动3个
3、增、删、改数据
(1)在增删改数据的时候,执行完SQL语句,必须提交  conn.commint()
# 在增删改数据的时候,执行完SQL语句,必须提交,否则在数据库中的数据不会改变
import pymysql conn = pymysql.Connect(
host='127.0.0.1',
user='root',
password='hf19970124',
database='mydb',
port=3306,
charset='utf8'
) cursor = conn.cursor(pymysql.cursors.DictCursor) sql = 'insert into stu values(1,"ton"),(2 ,"jack")'
# sql = 'update stu set name="TOM" where id = 2'
# sql = 'delete from stu where name = "tom"' cursor.execute(sql) conn.commit() # 提交 cursor.close()
conn.close()

提交 conn.commit()

(2)修改数据时,如果发生错误,数据应该回到起始值,如果修改失败,就会抛出异常,可以对异常进行处理,只要抛出异常就将数据撤销  conn.rollback()

import pymysql
# 创建链接得到一个链接对象
conn = pymysql.Connect(
host="127.0.0.1", # 数据库服务器主机地址
user="root", # 用户名
password="admin", # 密码
database="day42", #数据库名称
port=3306, # 端口号 可选 整型
charset="utf8" # 编码 可选
)
# 获取游标对象 pymysql.cursors.DictCursor指定 返回的结果类型 为字典 默认是元祖类型
cursor = conn.cursor(pymysql.cursors.DictCursor) try:
cursor.execute("update moneyTable set money = money - 50 where name = '小明'")
#如果小花的账户出问题了 无法更新数据 那就需要回滚
cursor.execute("update moneyTable set money = money + 50 where name = '小花'")
conn.commit()
except:
conn.rollback() cursor.close()
conn.close()

撤销 conn.roback()

MySQL数据库(五)—— 用户管理、pymysql模块的更多相关文章

  1. 第二百八十一节,MySQL数据库-SQL注入和pymysql模块防止SQL注入

    MySQL数据库-SQL注入和pymysql模块防止SQL注入 SQL注入就是通过SQL语句绕开程序判断,获取到数据库的内容 下面以一个简单的程序登录SQL注入举例: 正常登录 1.数据库有一张会员表 ...

  2. mysql数据库: 用户管理、pymysql使用、navicat插件使用

    一.用户管理 二.pymysql增删改查 三.sql注入攻击 一.用户管理 数据安全非常重要 不可能随便分配root账户 应该按照不同开发岗位分配不同的账户和权限 mysql中 将于用户相关的数据放在 ...

  3. JavaWeb-SpringBoot_使用MySQL数据库实现用户管理_demo

    使用Gradle编译项目 传送门 项目已托管到Github上 传送门 SpringBoot使用MySQL实现 实现功能:普通用户注册.普通用户登录.管理员通过edit-user页面和show-all- ...

  4. mysql数据库之用户管理和权限

    mysql服务器进程在启动的时候会读取这6张表,并在内存中生成授权表,所以这几个文件是直接加载进内存的. 以后后续的任何用户登录及其访问权限的检查都通过检查这6张表来实现的.通过访问内存上所生成的结构 ...

  5. Mysql数据库的用户和日志管理

    Mysql数据库的用户和日志管理 数据库的用户管理 1.mysql用户账号管理 用户账号 user@host user:账户名称 host:此账户可通过哪些客户端主机请求创建连接线程,可以是ip.主机 ...

  6. 通过批处理(bat)命令创建mysql数据库及用户等

    1.建立数据库文件:mysqlCreatDB.sql create database Mydb 2.为用户赋予权限文件:grantUser.sql grant select,insert,update ...

  7. python专题-Mysql数据库(python3._+ PyMysql)

    之前写过一篇 Python使用MySQL数据库的博客,主要使用的是Python2和MySQLdb驱动. python使用mysql数据库 Python2 ---> Python3 MySQLdb ...

  8. freeswitch用户整合(使用mysql数据库的用户表)

    转:freeswitch用户整合(使用mysql数据库的用户表) freeswitch是一款强大的voip服务器,可以语音和视频.但是它默认是采用/directory文件夹下的xml来配置用户的,对于 ...

  9. MYSQL数据库、用户、表等基础构建

    MYSQL数据库.用户.表等基础构建: 1.->:创建数据库: 1.1. create schema [数据库名称] default character set utf8 collate utf ...

  10. Python数据库MySQL之数据备份、pymysql模块

    一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 掌握: #1. 测试+链接 ...

随机推荐

  1. Anaconda详细安装及使用教程(带图文)

    https://blog.csdn.net/ITLearnHall/article/details/81708148

  2. 10 面向对象(package关键字的概述及作用)

    10.01_面向对象(package关键字的概述及作用) A:为什么要有包 *开发时有很多类,如果放在一个文件夹中不方便管理,而且容易重复 将字节码(.class)进行分类存放 包其实就是文件夹 B: ...

  3. 原生JavaScript 模拟alert对话框

    Window.prototype._alert = function() { //创建一个大盒子 var box = document.createElement("div"); ...

  4. [bzoj4589]Hard Nim(FWT快速沃尔什变化+快速幂)

    题面:https://www.lydsy.com/JudgeOnline/problem.php?id=4589 题意 求选恰好n个数,满足每个数都是不大于m的质数,且它们的异或和为0的方案数. 解法 ...

  5. 使用latex绘制多层神经网络结构图

    1,使用Tikz包: 2,参考官方例程单层神经网络结构,绘制了一个含有3隐藏层的BP神经网络节点图 代码如下: \documentclass{article} \usepackage{tikz} \b ...

  6. NMS python实现

    import numpy as np ''' 目标检测中常用到NMS,在faster R-CNN中,每一个bounding box都有一个打分,NMS实现逻辑是: 1,按打分最高到最低将BBox排序 ...

  7. export的用法

    定义环境变量并且赋值 # export MYENV= //定义环境变量并赋值 # export -p declare -x HOME=“/root“ declare -x LANG=“zh_CN.UT ...

  8. Laravel4 最佳学习代码以及资料推荐(转)

    https://github.com/andrew13/Laravel-4-Bootstrap-Starter-Site 充分展现了Laravel的强大之处 Laravel虽然上手难度会比其他框架大很 ...

  9. 【Java】Java字符串转码

    最近在开发项目中,偶尔遇到从页面上传到后台的中文数据,老是出现乱码的情况,但是对这个转码的过程又记不住,故此在此备份一下,希望对朋友们也有所帮助: String title=request.getPa ...

  10. SpringBoot传递单一参数时@RequestParam和@RequestBody的区

    用SpringBoot框架做项目时,经常需要前端给后端传递参数,如果需要多条参数,通常的做法是把这些参数封装为一个对象来传递,前端用POST方式调用.但有时会遇到后端只需要一条参数(比如一个Strin ...