2019-07-16

防止sql注入

漏洞为即使你随便输入一个账户,按照”xxx’ or 1=1 – “的格式,不输入密码也能登录进去,这种漏洞我们称呼为”sql注入”;问题主要存在于sql语句的写法。

解决:

为了避免sql注入,我们不要自己做拼接,用pymysql自带的execute后面传参数的方式,有如下三种方法:

sql="select*fromuserinfowhereusername=%sandpassword=%s"cursor.execute(sql, (user, pwd))

或者:

sql="select*fromuserinfowhereusername=%sandpassword=%s"cursor.execute(sql,[user, pwd])

或者:

sql="select*fromuserinfowhereusername=%(u)sandpassword=%(p)s"cursor.execute(sql, {'u':user,'p': pwd})


索引


索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。

更通俗的说,数据库索引好比是字典前面的目录,能加快数据库的查询速度

索引的目的在于提高查询效率

 索引的使用

查看索引

showindexfrom表名;

创建索引

如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致

字段类型如果不是字符串,可以不填写长度部分

createindex索引名称on表名(字段名称(长度))

删除索引:

dropindex索引名称on表名;

索引demo

 创建测试表test_index

createtabletest_index(titlevarchar(10));

账户管理


在生产环境下操作数据库时,绝对不可以使用root账户连接,而是创建特定的账户,授予这个账户特定的操作权限,然后连接进行操作,主要的操作就是数据的crud

MySQL账户体系:根据账户所具有的权限的不同,MySQL的账户可以分为以下几种

服务实例级账号:启动了一个mysqld,即为一个数据库实例;如果某用户如root,拥有服务实例级分配的权限,那么该账号就可以删除所有的数据库、连同这些库中的表

数据库级别账号:对特定数据库执行增删改查的所有操作

数据表级别账号:对特定表执行增删改查等所有操作

字段级别的权限:对某些表的特定字段进行操作

存储程序级别的账号:对存储程序进行增删改查的操作

账户的操作主要包括创建账户、删除账户、修改密码、授权权限等

注意:

进行账户操作时,需要使用root账户登录,这个账户拥有最高的实例级权限

通常都使用数据库级操作权限

主从同步的定义

主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

使用主从同步的好处:

通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。

提高数据安全,因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据

在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能

你可能感兴趣的:(2019-07-16)