数据库渗透技术
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的隐藏(该项修改需要重启数据库才能生效)。