MySQL数据库(五)—— 用户管理、pymysql模块

用户权限管理、pymysql模块

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

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

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

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

# 3.解除授权
revoke [权限名字:select、insert、delete……all] on 数据库名.表名 from 用户名@"主机地址";
eg:revoke select on mydb.* from [email protected]‘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.roback()

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()

原文地址:https://www.cnblogs.com/linagcheng/p/9662824.html

时间: 2024-12-28 23:22:44

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

MySQL数据库的用户管理、数据库备份与恢复

MySQL 是一个真正的多线程.多用户的 SQL 数据库服务,凭借其高性能.高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统.在2008年以前,MySQL 项目由 MySQL AB 公司进行开发.发布和支持,之后历经 Sun 公司收购 MySQL AB 公司,Oracle 公司收购 Sun 公司的过程,目前 MySQL 项目由 Oracle 公司负责运营和维护. MySQL 数据库的用户管理 新建用户mysql -u root -p ##登录数据库use mysql; ##进入m

mysql用户管理+pymysql模块

mysql 用户管理 Mysql 是一个tcp 服务器 用于接收用户端发送的指令,操作服务器上的文件数据 在mysql自带的mysql数据库中有4个表用于用户管理的 分别是: 优先级从高到低 user -> db -> tables_priv -> columns_priv 1.创建用户 create user 用户名@"主机地址" identified by "密码"; 此处的主机地址 不是服务器地址 而是表示 这个账户可以在那台电脑上登录 2.

Mysql数据库之用户管理

显示Mysql账号 mysql> select user(); +----------------+ | user() | +----------------+ | [email protected] | +----------------+ 1 row in set (0.00 sec) mysql> select user,host from mysql.user; +------+-------------+ | user | host | +------+-------------+

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

使用Gradle编译项目 传送门 [未完]1.29傍晚回来整理实现逻辑 用户注册功能  用户登录功能 管理员查询用户界面功能  用户信息回显功能  管理员修改用户信息功能 原文地址:https://www.cnblogs.com/1138720556Gary/p/10329753.html

mysql中的用户管理

由于工作的需要,要新建一个mysql的用户,在查阅了mysql的手册之后,做了如下的一些方法记录. #新增一个mysql用户custom,密码为obscure,只能从本机访问和操作数据库testGRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on test.* TO 'custom'@'localhost' IDENTIFIED by 'obscure';#执行完成后会发现user表中多了一条记录,db表中也多了一条记录,并且权限是写入db表的 GRA

mysql 访问控制和用户管理

mysql 访问控制和用户管理 目的:确保数据的安全.用户的访问权限不能多也不能少. root对数据库有完全的控制. 在日常工作中,不要使用root,而是使用有限权限的一系列账户,根据使用者的身份,给予不同的权限. select user(): 查看当前用户: SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 设定了一个查看所有的用户的格式:简单的写法是select user,

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

之前写过一篇 Python使用MySQL数据库的博客,主要使用的是Python2和MySQLdb驱动. python使用mysql数据库 Python2 ---> Python3 MySQLdb --> PyMySQL 一,安装PyMySQL Python是编程语言,MySQL是数据库,它们是两种不同的技术:要想使Python操作MySQL数据库需要使用驱动.这里选用PyMySQL驱动.下载地址: https://pypi.python.org/pypi/PyMySQL https://git

限制MySQL数据库单个用户最大连接数等的方法

服务器上总有一些网站用户的连接数过大,而影响了其他的网站的正常使用,那么如何把某一条臭鱼限制在自己的一亩三分地呢?限制MySQL数据库单个用户最大连接数等的方法下面我来说一下方法和原理: 1.对于Linux和Uinx操作系统需要找到my.cnf,对于windows操作系统需要找到my.ini 2.因为my文件是MySQL的配置文件,我们以前只知道他是对MySQL数据库的整体控制,其实他还可以对单个用户进行限制. 3.将my.cnf或my.ini下载下来,编辑,可以把多余项去掉,加入: max_c

设置、修改及找回 MySQL 数据库 root 用户的密码

1. MySQL 数据库用户安全策略介绍 安装 MySQL 数据库后,默认的管理员 root 密码为空,很不安全,需要设置密码.针对 MySQL数据库的用户处理,还有更严格的做法: ① 增加 system 并提升权限为超级管理员,即和 root 等价的用户,只是名字不同.     mysql> grant all privileges on *.* to [email protected]'localhost' identified by 'alinuxer123' with grant opt

达梦数据库的用户管理

达梦数据库的用户管理 安装完达成梦数据库,系统默认会自带有一些系统级的用户:1.sys -----达梦数据库内置管理用户,不能登录数据库,数据库使用的大部分的数据字典和动态性能视图sys.2.Sysdba -----数据库的管理员3.Sysauditor---审计用户4.Syssso---安全用户 在达梦数据库里每一个用户都有一个默认的表空间,对于 SYS.SYSSSO.SYSAUDITOR 系统用户,默认的用户表空间是 SYSTEM,SYSDBA 的默认表空间为 MAIN,新创建的用户如果没有