mysql2
having过滤
权限管理
创建账号
1.本地帐号
create user 'zqh'@'localhost' identified by '123'; #连接方式 mysql -uzqh -p123
2.远程账号
create user 'zqh'@'客户端ip' identified by '123'; #连接方式 mysql -uzqh -p123 -h服务端ip 。只有固定的ip的客户端才能使用
create user 'zqh'@'%' identified by '123'; #连接方式 mysql -uzqh -p123 -h服务端ip 。 所有ip的客户端都能使用
3.授权
user所有都开放权限: user:*.*
db用于对库级别的开放权限 db:db1.*
对表级别进行开放权限 tables_priv:db1.t1
对某一行记录进行开放权限 columns_priv:id,name
4.具体授权方法
发放所有库的全部权限:grant all on *.* to '具体账号';
发放所有库的选择权限:grant select on *.* to '具体账号';
回收所有库的全部权限:revoke all on *.* from '具体账号';
回收所有库的选择权限:revoke select on *.* from '具体账号';
发放db1库的全部权限:grant all on db1.* to '具体账号';
发放db1库的选择权限:grant select on db1.* to '具体账号';
发放db1库的t2表的全部权限:grant all on db1.t2 to '具体账号';
发放db1库的t2表选择权限:grant select on db1.t2 to '具体账号';
python的简单连接实例
import pymysql #获取链接,host接id,port接端口(默认3306),user接远程账号,db接库名字 conn=pymysql.connect( host='202.193.52.51', port=3306, user='zqh', password='zqh', db='db1', charset='utf8' ) #拿到游标对象 cursor=conn.cursor() sql='select * from vip;' #写sql语句 rows=cursor.execute(sql) #执行sql语句 print(rows)
注入问题,防止sql语句被input的内容进行拼接
1.将input的内容进行限制,不能输入--空格之类的非法字符串
2.mysql自带清除非法字符串
sql='select * from userinfo where user =%s and pwd=%s'
rows=cursor.execute(sql,(input_user,input_pwd))
语句
1.插入一条记录
import pymysql #获取链接 conn=pymysql.connect( host='202.193.52.51', port=3306, user='zqh', password='zqh', db='db1', charset='utf8' ) #拿到游标对象 cursor=conn.cursor() sql=''' insert into main(name,content,flink) values('samt','什么几把东西',3); ''' rows=cursor.execute(sql) print(rows) conn.commit() #必须写这句确认才能完全进行插入操作 cursor.close() conn.close()
2.插入多条记录
import pymysql #获取链接 conn=pymysql.connect( host='202.193.52.51', port=3306, user='zqh', password='zqh', db='db1', charset='utf8' ) #拿到游标对象 cursor=conn.cursor() sql=''' insert into main(name,content,flink) values(%s,%s,%s) ''' rows=cursor.executemany(sql,[('ahao','你好',3),('bhao','你好111',3)]) print(rows) conn.commit() #必须写这句确认才能完全进行插入操作 cursor.close() conn.close()
3.查记录
import pymysql #获取链接 conn=pymysql.connect( host='202.193.52.51', port=3306, user='zqh', password='zqh', db='db1', charset='utf8' ) #拿到游标对象 cursor=conn.cursor() sql=''' select * from vip; ''' rows=cursor.execute(sql) print(rows) #利用rows.fetchone()来获取取出来的 print(cursor.fetchone()) print(cursor.fetchone()) print(cursor.fetchone()) conn.commit() #必须写这句确认才能完全进行插入操作 cursor.close() conn.close()

浙公网安备 33010602011771号