数据库渗透技术

SQL注入

此知识点繁杂详见另一篇文章

数据库备份

SQL Server数据库备份

在SQL Server2000中有数据库—完全,数据库—差异,事务日志,文件和文件组这个四种备份方式

MySQL数据库备份与恢复

mysqldump的使用

mysqldump -uroot -pPassword [database name] > [dump file]

备份文件中包含数据库结构和数据

  • -opt
  • dump文件中包含drop table if exists tableName
  • insert之前包含一个锁表语句lock tables tableName write,insert之后包含unlock tables

mysqldump –host=host1 –opt sourceDb| mysql –host=host2 -C targetDb

跨主机备份

  • 将host1上的sourceDb复制到host2的targetDb,前提是host2主机上已经创建targetDb数据库
  • -C为数据传输使用数据压缩

–no-data

只备份数据库结构

mysql [database name] < [backup file name]

还原数据从文件

与cron命令结合实现自动备份

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

在/etc/crontab配置文件中加入下面代码行

30 1 * * * root mysqldump -u root -pPassword –all-databases | gzip > /mnt/disk2/database_date '+%m-%d-%Y'.sql.gz

每天凌晨1:30备份主机上的所有数据库并压缩dump文件为gz格式,date ‘+%m-%d-%Y’得到当前日期的MM-DD-YYYY格式

mysqlbinlog :二进制日志查看和使用工具

mysql的my.ini中 #log-bin =mysql-bin,去掉前面的#即可,需重启mysql; 二进制日志文件记录数据库的增加和删除操作,每重启一次mysql,将会增加一个binlog文件,格式为logbin.000001 当日志文件大于100m时会自动生成新的日志文件。 MySQL的binlog日志

双机热备技术

双机备份-MySQL主从模式

所谓双机热备,即为解释为:当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。 与备份是 两回事情, 前者实现方法为故障转移,即当发生紧急情况时调用从机维护正常工作,后者为纯粹的数据拷贝,强调的是数据恢复。

参考

数据库安全配置

MySQL数据库用户与权限管理

主要涉及到mysql数据库用户权限的分配与管理

创建用户:

insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));

修改用户密码

update user set password=password('123456') where user='root';

修改完之后需要使用命令flush privileges保存才能生效。

删除用户

drop user test@'localhost';

用户在新建时是usage的权限,usage权限在MySQL的官方理解为无权限,所以需要我们给用户授权,才能正常使用

修改权限

grant select,update on mysql.user to tset@'localhost';
fush privileges;

grant all privileges on *.* to test@localhost; /*.*为此用户授予数据库中所有表所有权限
fush privileges;

查看用户权限

show grants for test@'localhost';

撤销权限

revoke delete,update on mysql.user from test@'localhost';

附:忘记密码的处理办法

shell>service mysqld stop #停止mysql服务
shell>mysqld_safe --skip-grant-tables & #以不启用grant-tables模式启动mysql
shell>mysql -uroot -p #输入命令回车进入,出现输入密码提示直接回车。
mysql>use mysql;
mysql>update user set password=PASSWORD("newpassord")where user="root"; #更改密码为 newpassord
mysql>flush privileges; #更新权限
mysql>quit #退出

Sql server 安全配置

默认情况下,SQL Server使用1433端口监听,修改1433端口有利于sql server的隐藏(该项修改需要重启数据库才能生效)。