一、用户管理

二、pymysql增删改查

三、sql注入攻击

一、用户管理

数据安全非常重要 不可能随便分配root账户
应该按照不同开发岗位分配不同的账户和权限

mysql中 将于用户相关的数据放在mysql库
user - > db - > tables_priv -> columns_priv
如果用户拥有对所有库的访问权 则存储在 user中
如果用户拥有对部分库的使用权 db
如果用户拥有对部分表的使用权 tables;
如果用户拥有对表中某些字段的使用权 columns_priv中

创建新账户
create user "账户名"@"主机名" identified by 密码
create user "tom"@"localhost" identified by "123";

授予所有数据库所有表的所有权限给jerry这个用户 并允许jerry在任意一台电脑登录
如果用户不存在会自动创建
grant all on *.* to "jerry"@"%" identified by "123" with grant option;
with grant option这个用户可以将拥有的权限授予别人

授予day45数据库所有表的所有权限给jack这个用户 并允许jerry在任意一台电脑登录
grant all on day45.* to "jack"@"%" identified by "123";
授予day45数据库的emp表的所有权限给rose这个用户 并允许jerry在任意一台电脑登录
grant all on day45.emp to "rose"@"%" identified by "123";
授予day45数据库的emp表的name字段的查询权限给maria这个用户 并允许jerry在任意一台电脑登录
grant select(name) on day45.emp to "maria"@"%" identified by "123";

收回权限
REVOKE all privileges [column] on db.table from user@"host";

如何授权就如何收回 因为不同权限信息存到不同的表中
REVOKE all privileges on day45.emp from maria@"%";

立即刷新权限信息
flush privileges;

# 删除用户
drop user 用户名@主机
drop user maria@%

当你在云服务器部署了 mysql环境时 你的程序无法直接连接到服务器 需要授予在任意一台电脑登录的权限
grant all on *.* to "jerry"@"%" identified by "123" with grant option;

二、pymysql增删改查

import pymysql

conn = pymysql.connect(
host="127.0.0.1",
port=3306,
user="root",
password="root",
database="day47",
charset="utf8"
)
# cursor 游标对象 负责执行sql语句 获取返回的数据
# pymysql.cursors.DictCursor指定使用字典类型的游标 默认是元祖类型
cursor = conn.cursor(pymysql.cursors.DictCursor) sql = "select *from user" # 返回值是本次查询的记录条数
res = cursor.execute(sql) #执行sql
print(cursor.fetchall()) # 提取所有结果
# cursor.scroll(1,mode="absolute") # 游标从开始位置往后移动1条记录
# cursor.scroll(1,mode="relative") # 游标从当前位置往后移动1条记录
# print(cursor.fetchone()) # 提取一条记录
# print(cursor.fetchone())
# print(cursor.fetchone())
# print(cursor.fetchmany(2)) # 提取指定数量记录 # print(res)
import pymysql

conn = pymysql.connect(
host="127.0.0.1",
port=3306,
user="root",
password="root",
database="day47",
charset="utf8"
)
# cursor 游标对象 负责执行sql语句 获取返回的数据
# pymysql.cursors.DictCursor指定使用字典类型的游标 默认是元祖类型
cursor = conn.cursor(pymysql.cursors.DictCursor) # sql = "insert into user values(null,'中狗子','123')"
sql = "update user set name = '小黄' where name = '中狗子'"
# sql = "delete from user where name = '大狗子'" res = cursor.execute(sql)
# pymysql不会自动提交 对数据的修改不会持久化 需要手动commit
conn.commit()
print(res)

三、sql注入攻击

import pymysql

conn = pymysql.connect(
host="127.0.0.1",
port=3306,
user="root",
password="root",
database="day47",
charset="utf8"
)
# cursor 游标对象 负责执行sql语句 获取返回的数据
# pymysql.cursors.DictCursor指定使用字典类型的游标 默认是元祖类型
cursor = conn.cursor(pymysql.cursors.DictCursor) name = input("输入用户名:") pwd = input("输入密码:") sql = "select *from user where name = %s and password = %s"
res = cursor.execute(sql,(name,pwd))
if res:
print("登录成功")
else:
print("登录失败") # 什么是sql注入攻击 一些了解sql语法的攻击者 可以通过一些特殊符号 来修改 sql执行逻辑 达到绕过验证的效果
# 避免的方式 1.在输入时加上正则判断 不允许输入与sql相关的关键字 这种方式 无法避免 代理服务器发起的攻击
# 2.在服务器端 执行sql前先来一波判断
# pymysql中已经帮你做了处理 只要将参数的拼接交给pymysql来完成就能够避免攻击

mysql数据库: 用户管理、pymysql使用、navicat插件使用的更多相关文章

  1. Mysql数据库用户及用户权限管理,Navicat设置用户权限

    Mysql数据库用户及用户权限管理,Navicat设置用户权限 一.Mysql数据库的权限 1.1 mysql数据库用户权限级别 1.2 mysql数据库用户权限 1.3 存放用户权限表的说明 二.用 ...

  2. Serv-u Mysql数据库用户

    Serv-u 关联Mysql数据库用户需要用到ODBC数据源,windows不自带支持MySQL.所以要网上下载自己安装 官网下载地址:http://dev.mysql.com/downloads/c ...

  3. MySQL数据库权限管理

    # MySQL数据库权限管理 ### 前言------------------------------ 对不同的用户赋予不同级别的访问权限是个好习惯- 杜绝一些恶意用户 ### 参考资料------- ...

  4. Oracle 数据库用户管理

    Oracle 数据库用户管理 Oracle 权限设置      一.权限分类: 系统权限:系统规定用户使用数据库的权限.(系统权限是对用户而言). 实体权限:某种权限用户对其它用户的表或视图的存取权限 ...

  5. 数据库-用户管理与pymysql

    mysql用户管理 !这是dba的活儿!,但是万一公司没有dba? mysql用户指的是什么? 我们每一次在操作前都需要指定账号和密码,这个账号就是mysql的用户; 为什么要管理? 一个公司不可能只 ...

  6. mysql数据库用户和权限管理记录

    一.MySQL用户的基本说明: 1.1 用户的基本结构MySQL的用户:用户名@主机 ■用户名:16个字符以内■主机:可以是主机名.IP地址.网络地址等主机名:www.111cn.net,localh ...

  7. MySQL数据库用户和权限管理

    一.视图 视图:VIEW,虚表,保存有实表的查询结果,在视图插入的内容都会存入表中.创建方法: CREATE VIEW view_name [(column_list)] AS select_st ...

  8. 子查询,用户管理,pymysql使用

    当我们的一条记录 分散不同的表中时,就需要进行多表查询例如 一对一 一对多 多对多 1.笛卡尔积查询 意思就是将两个表中的所有数据 全部关联在一起例如A表有两条 B表有三条 一共有6条会产生大量的错误 ...

  9. 辛星解读mysql的用户管理

    可能做开发的多半不太关注这方面,可是要说到做运维.那就不能不关注了.由于我们都知道,root的权限太大了.不是随便能用的.我们平时最好用一些比較低的权限的用户.这样会让我们的安全性大大提高,也能防止我 ...

  10. mysql之用户管理

    本文内容: 用户的介绍 查看用户 创建用户帐户 修改账户 删除帐户 关于匿名用户 首发日期:2018-04-19 用户的介绍: mysql的客户端连接是以用户名来登录服务端. 服务端可以对用户的权限来 ...

随机推荐

  1. 8. find

    find使用 find命令的主要作用是对树形目录层次结构进行彻底检查. find命令的一般格式: find pathname -expressions     find常用表达式 在当前文件夹中找出名 ...

  2. sql server 本机编译存储过程(内存优化表) 绕过不支持FULL OUTER JOIN 的限制的方法

    将FULL OUTER JOIN 转成left join,right join 和 union select * from A ID NAME4 Spaghetti1 Pirate2 Monkey3 ...

  3. springboot-RequestMappingHandlerMapping

    作用:查看应用请求对应的ur和方法l情况 实例: RequestMappingHandlerMapping mapping =applicationContext.getBean("requ ...

  4. antd <BackTop>组件的使用

    <Content className={style.content} style={{ maxHeight: 'calc(100vh - 175px)',overflowY:"auto ...

  5. MATLAB实现图像的代数运算

    目录 1.使用求补运算对各类图像进行处理 2.利用imlincomb函数将图像的灰度值放大1.5倍 3.利用imlincomb函数计算两幅图像的平均值. 4.图像的加法运算 5.利用imnoise函数 ...

  6. Linux三种SSH协议登陆方式

    在实际工作中遇到了三种不同SSH协议登陆Linux服务器的方式,由简单到复杂分别阐述:一.最简单也是最不安全的root账号密码登陆通过root账号+root密码登陆Linux服务器. 二.普通用户登陆 ...

  7. 【VS开发】单文档中往视图中加入控件

    [VS开发]单文档中往视图中加入控件 标签(空格分隔): [VS开发] 分隔视图的但文档窗口,要显示控件,推荐使用CFormView或者CCtrlView,前者和对话框的做法一致. 在MainFram ...

  8. Go语言中数组的内部实现和基础功能

    数组的内部实现和基础功能 因为数组是切片和映射的基础数据结构.理解了数组的工作原理,有助于理解切片和映射提供的优雅和强大的功能. 内部实现 在Go语言里,数组是一个长度固定的数据类型,用于存储一段具有 ...

  9. 【Python】【demo实验18】【练习实例】【统计输入字符串中,数字的个数、英文字母的个数及其他符号的个数】

    原题: 输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. (本题暂时不支持中文字符及汉字) 我的代码: #!/usr/bin/python # encoding=utf-8 # -* ...

  10. 代码中 方法 处提示:This method has a constructor name

    “此方法具有构造方法的名字” package classpackage; public class Puppy { public void Puppy(String name) { System.ou ...