MySQL数据常见的保护方式_MySQL数据保护有哪些方式
自动的数据库备份不同,对系统管理员来说,保护数据免受未授权用户的侵犯需要采取一定的行动。下面由学习啦小编为大家整理的MySQL数据保护方式,希望大家喜欢!
MySQL数据保护方式
1、删除授权表中的通配符
MySQL访问控制系统通过一系列所谓的授权表运行,从而对数据库、表格或栏目级别的用户访问权利进行定义。但这些表格允许管理员为一名用户设定一揽子许可,或一组应用通配符的表格。这样做会有潜在的危险,因为黑客可能会利用一个受限的账户来访问系统的其他部分。由于这一原因,在设置用户特权时要谨慎,始终保证用户只能访问他们所需的内容。在给个别用户设定超级特权时要尤其小心,因为这种级别允许普通用户修改服务器的基本配置,并访问整个数据库。
建议:对每个用户账户应用显示特权命令,以审查授权表,了解应用通配符许可是否恰当。
2、要求使用安全密码
用户账号的安全与用来保护它们的密码密切相关。因此,在安装MySQL时第一件事就应该设置MySQL根账号的密码(默认为空)。修复这一漏洞后,接下来就应要求每个用户账号使用一个密码,且不要使用生日、用户名或字典中的单词这些容易识别的启发式密码。
建议:应用MySQL-安全-授权选项避免使用旧的,不大安全的MySQL密码格式。
3、检查配置文件许可
一般来说,要使服务器连接更为快速方便,单个用户和服务器管理员必须把他们的用户账号密码存储在单用户MySQL选项文件中。但是,这种密码是以纯文本形式存储在文件中的,很容易就可以查阅。因此,必须保证这样的单用户配置文件不被系统中的其他用户查阅,且将它存储在非公共的位置。理想情况下,你希望单用户配置文件保存在用户的根目录,许可为0600。
4、加密客户与服务器之间数据传送 :
MySQL(及其它)客户与服务器构架的一个重要问题就是通过网络传送数据时的安全问题。如果客户与服务器间的交互以纯文本形式发生,黑客就可能“嗅出”被传送的数据包,从而获得机密信息。你可以通过激活MySQL配置中的SSL,或应用一个OpenSSH这样的安全应用来为传送的数据建立一个安全的加密“通道”,以关闭这一漏洞。以这种形式加密客户与服务器连接可使未授权用户极难查阅往来的数据。
5、禁止远程访问
如果用户不需要远程访问服务器,你可以迫使所有MySQL连接通过UNIX插槽文件来完成,从而大大减少网络受攻击的风险。这一过程可通过跳过网络选项启动服务器来完成。这样可以阻止TCP/IP网络连接到MySQL上,保证没有用户可以远程连接系统。
建议:可以在MySQL服务器配置中添加捆绑地址127.0.0.1指令来增强这一功能,迫使MySQL捆绑当地机器的IP地址来保证只有同一系统中的用户可以连接到MySQL。
6、积极监控MySQL访问记录
MySQL中带有很多不同的日志文件,它们记录客户连接,查询和服务器错误。其中,最重要的是一般查询日志,它用时间标签记录每名客户的连接和中断时间,并记录客户执行的每个查询。如果你怀疑发生了不寻常的行为,如网络入侵,那么监控这个日志以了解行为的来源是个好方法。
保护你的MySQL数据库是一个日常工作。因此,即使完成了上述步骤,也还需要你利用更多的时间去了解更多的安全建议,积极监控并更新你的系统安全。
SQL数据使用方法
1、 isnull();函数
在SQL Server 中经常会遇到一些字段为空值,这里可以使用isnull()这个函数来做判断;eg:
select isnull(Table_column,'Test') as column from Table
这个语句意思就是:从Table表中取字段Table_column,如果该字段值为空,则用“Test”字符来代替;
2、sysobject
SQL Server中有一个系统对象表 sysobject 这个表里存储了数据库中所有的对象,比如约束,默认值,日志,规则,存储过程,表名等等,详细可以查看帮助手册;
select name from sysobject where Xtype='U'
这语句就是讲数据库中所有的表名查出来;
Xtype可以取值为以下:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
FN = 标量函数
IF = 内嵌表函数
K = PRIMARY KEY 或 UNIQUE 约束
L = 日志
P = 存储过程
R = 规则
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
V = 视图
X = 扩展存储过程
AF = 聚合函数 (CLR)
FS = 程序集 (CLR) 标量函数
FT = 程序集 (CLR) 表值函数
IF = 内联表函数
IT = 内部表
PC = 程序集 (CLR) 存储过程
PK = PRIMARY KEY 约束(type 为 K)
SN = 同义词
SQ = 服务队列
TA = 程序集 (CLR) DML 触发器
TT = 表类型
UQ = UNIQUE 约束(type 为 K)
3、SQL Server 2008工具使用;
新建立一个数据库表时,当建立好了,但又要修改,有时候DB会阻止对表结构的修改,需要设置如下:
SQLServer----"tool"----"option"----"Designers"----"prevent saving changes that require table recreating" 去掉这个“阻止修改”选项;
4、nvarchar(Max)
SQL Server 中Max是最大值,其定义是4000,nvarchar(Max) 其实就是nvarchar(4000);
5、select * from table
在数据库中,一般小数据量的select * from table 不会发觉有什么慢,但是一旦到了大数据量的数据库中,这种查询是最慢的最耗时间的!数据库的开销会很大!
所以不要轻易的在大数据表上执行不带条件的select cout(*) from table,不仅耗时大,而且会把这个数据库表上S锁,在cout(*)期间,任何有关和该表的insert update delete都会被阻止!!!
6、getdate()
getdate()函数用于获得当前系统的系统时间这个精确到了毫秒:eg:"2013-12-12 12:23:33:321"
7、newid()
这个不用多说了,做主键ID时最常用了,此函数可以生成一个唯一的guid,32位长,这个强度大,而且由数据库系统生成,具有唯一性!
SQLServer登录连接失败怎么办
步骤一:打开SQL Server 配置管理器
双击SQL Server服务
步骤二:如果双击后出现了一列服务列表
(我的情况是没有出现),直接找到SQL Server(MSSQLSERVER),启动该服务后即可登录,
如果该服务启动不了。可以在计算机(右击)-管理-服务与程序中找到该服务,点击查看属性,并在"登录"标签中选择"本地系统账户",选择后再启动该服务。
(如果步骤二开始时没有出现一系列的服务列表而是出现"远程过程调用失败",就进行步骤三)
步骤三:出现该情况的原因
因为安装Visual Studio 2013或者2012版本的时候,会自动安装"Microsoft SQL Server 2013(2012) Express LocalDB"服务,导致原本的SQL2008无法正常工作。
解决办法很简单,在控制面板-程序与功能,找到"Microsoft SQL Server 2013(2012) Express LocalDB"并直接卸载掉,然后打开SQL Server 配置管理器,就会显示正常使用。
解决后再回到步骤二即可。