一、用户管理

二、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. SpringBoot: 8.整合freemarker(转)

    1.创建maven项目,添加pom依赖 <!--springboot项目依赖的父项目--> <parent> <groupId>org.springframewor ...

  2. Windows安装多个版本JDK如何切换

    本人电脑同时安装了jdk1.7和1.8,以下时切换jdk版本的方式: 1.修改环境变量: 2.修改注册表: 打开HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft 分别修改Jav ...

  3. Git安装以及配置SSH Key——Windows

    安装 安装 Git 官网下载一个Windows版本的Git. 然后一直下一步即可,如下图 环境变量自动配好的,可以去检查一下环境变量中PATH中有没有Git的环境变量 然后在桌面右击鼠标,选择Git ...

  4. android#全局获取Context的技巧

    参考<第一行代码>——郭霖 回想这么久以来我们所学的内容,你会发现有很多地方都需要用到Context,弹出Toast的时候需要.启动活动的时候需要.发送广播的时候需要.操作数据库的时候需要 ...

  5. 鸟哥私房菜基础篇:磁碟配额(Quota)与进阶文件系统管理习题

    猫宁!!! 参考:http://cn.linux.vbird.org/linux_basic/0420quota.php 1-在前一章的第一个大量新增帐号范例中, 如果我想要让每个用户均具有 soft ...

  6. Linux下十大命令行下载工具

    Wget 这是最有名的工具,可用于通过CLI下载.这款工具功能很丰富,可以充当某种功能完备的GUI下载管理器,它拥有一款理想的下载管理器所需要的所有功能,比如它可以恢复下载,可以下载多个文件,出现某个 ...

  7. MQTT 简介及协议原理

    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种构建于TCP/IP协议上基于发布/订阅(publish/subscribe)模式的“轻量 ...

  8. Python动态地声明变量赋值

    通过exec().globals()和locals() # 通过exec() for i in range(1, 4): # 第一次循环 i=1 时,会执行字符串中的python语句 ex1 = &q ...

  9. 动态加载js不执行解决办法

    这个问题的产生原因是:我们项目有一个主index文件,在主index文件中需要根据参数来判断是加载pc.html的内容还是加载mobile.html的内容,一开始是使用jquery来做的,没有问题,后 ...

  10. SQL用法三(游标和Fetch)

    /一般情况下,我们用SELECT这些查询语句时,都是针对的一行记录而言,如果要在查询分析器中对多行记录(即记录集)进行读取操作时,则需要使用到游标或WHILE等循环/以下内容摘自http://www. ...