1,是的,必须这样才能保证数据的安全。
2,应该是后者,为了防止出现读写冲突;
3,有的数据库支持同时读,但是绝对不允许读写或是写进程同时进行的情况
4,,5,计算机的处理能力都很强,即使家用PC它的时间单位也是微秒级的,专门用于服务器的机器能力会更加强,另外,其实网络游戏并不占用多大的流量,只需请求很小的一部分数据,数据库服务器也一般不直接与游戏客户端相连,而是由游戏运营商的服务器处理后在向数据库服务器请求数据。
其实这个和jsp没啥关系,只要你的代码没有比如爆源码或者直接上传shell这些弱智的漏洞就行了,一般的做法其实很简单,就是给mysql分配一个单独的账号,而不要使用root权限,而且只能针对目标数据库 *** 作,其他的数据库没有 *** 作权限,如果要附加上jsp的话,那么就是别让你的程序出现注入之类的漏洞,因为只要存在注入,那么至少可以肯定你的数据库会全部泄露,这样会使别人进一步入侵你甚至控制你的服务器,当然了linux和windows的服务器还是有差别的,上面给你说的只是最一般的方法
MySQL数据库可以通过触发器,使之无法修改某些字段的数据,同时又不会影响修改其他字段。
DROP
TRIGGER
IF
EXISTS
`members`;
SET
@OLD_SQL_MODE=@@SQL_MODE,
SQL_MODE='';
DELIMITER
//
CREATE
TRIGGER
`members`
BEFORE
UPDATE
ON
`members`
FOR
EACH
ROW
BEGIN
set
newname
=
oldname;
set
newcellphone
=
oldcellphone;
set
newemail
=
oldemail;
set
newpassword
=
oldpassword;
END//
DELIMITER
;
SET
SQL_MODE=@OLD_SQL_MODE;
再举一个例子:
CREATE
TABLE
`account`
(
`id`
INT(10)
UNSIGNED
NOT
NULL
AUTO_INCREMENT,
`user`
VARCHAR(50)
NOT
NULL
DEFAULT
'0',
`cash`
FLOAT
NOT
NULL
DEFAULT
'0',
PRIMARY
KEY
(`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
每一次数据变化新增一条数据
INSERT
INTO
`test``account`
(`user`,
`cash`)
VALUES
('neo',
-10);
INSERT
INTO
`test``account`
(`user`,
`cash`)
VALUES
('neo',
-5);
INSERT
INTO
`test``account`
(`user`,
`cash`)
VALUES
('neo',
30);
INSERT
INTO
`test``account`
(`user`,
`cash`)
VALUES
('neo',
-20);
保护用户的余额不被修改
DROP
TRIGGER
IF
EXISTS
`account`;
SET
@OLD_SQL_MODE=@@SQL_MODE,
SQL_MODE='';
DELIMITER
//
CREATE
TRIGGER
`account`
BEFORE
UPDATE
ON
`account`
FOR
EACH
ROW
BEGIN
set
newcash
=
oldcash;
END//
DELIMITER
;
SET
SQL_MODE=@OLD_SQL_MODE;
其实这个和jsp没啥关系,只要你的代码没有比如爆源码或者直接上传shell这些弱智的漏洞就行了,一般的做法其实很简单,就是给mysql分配一个单独的账号,而不要使用root权限,而且只能针对目标数据库 *** 作,其他的数据库没有 *** 作权限,如果要附加上jsp的话,那么就是别让你的程序出现注入之类的漏洞,因为只要存在注入,那么至少可以肯定你的数据库会全部泄露,这样会使别人进一步入侵你甚至控制你的服务器,当然了linux和windows的服务器还是有差别的,上面给你说的只是最一般的方法
mysql数据库有undo空间
5种mysql做可靠性分析的方案:
1.MySQL Clustering(ndb-cluster stogare)
简介:
MySQL公司以存储引擎方式提供的高可靠性方案,是事务安全的,实时复制数据,可用于需要高可靠性及负载均衡的场合。该方案至少需要三个节点服务器才能达到较好的效果。
成本:
节点服务器对RAM的需求很大,与数据库大小呈线性比例;
最好使用千兆以太网络;
还需要使用Dolphin公司提供的昂贵的SCI卡。
优点:
可用于负载均衡场合;
可用于高可靠性场合;
高伸缩性;
真正的数据库冗余;
容易维护。
缺点:
随着数据库的变大,对RAM的需求变得更大,因此成本很高;
速度:
几乎 比典型的单独服务器(无千兆以太网,无SCI卡,存储引擎相关的限制少)慢10倍。
应用场合:
冗余,高可靠性,负载均衡
2 MySQL / GFS-GNBD/ HA (Active/Passive)
简介:
如果多个MySQL服务器使用共享硬盘作为数据存储,此方案如何?
GFS/GNBD可以提供所需的共享硬盘。
GFS是事务安全的文件系统。同一时刻你可以让一个MySQL使用共享数据。
成本:
最多n台高性能服务器的成本,其中一个激活的,其他作为备份服务器。
优点:
高可靠性
某种程度的冗余
按照高可靠性进行伸缩
缺点:
没有负载均衡
没有保证的冗余
无法对写 *** 作进行伸缩
速度:
单独服务器的2倍。对读 *** 作支持得较好。
应用场合:
需要高可靠性的、读 *** 作密集型的应用
3 MySQL / DRBD / HA (Active/Passive)
简介:
如果多个MySQL服务器使用共享硬盘作为数据存储,此方案如何?
DRBD可以提供这样的共享硬盘。DRBD可以被设置成事务安全的。
同一时刻你可以让一个MySQL使用共享数据。
成本:
最多n台高性能服务器的成本,其中一个激活的,而其他则作为备份服务器。
优点:
高可靠性;
一定程度的冗余;
以高可靠性名义来看是可伸缩的。
缺点:
没有负载均衡
没有保证的冗余
在写负载方面没有伸缩性
速度:
在读写方面相当于单独服务器
应用场合
需要高可靠性、读 *** 作密集型的应用
4 MySQL Write Master / Multiple MySQL Read Slaves (Active/Active)
简介:
考虑不同的读、写DB数据库连接的情况。可以使用一台主服务器用于写 *** 作,而采用n台从服务器用于读 *** 作。
成本:
最多1台高性能写服务器,n台读服务器的成本
优点:
读 *** 作的高可靠性;
读 *** 作的负载均衡;
在读 *** 作负载均衡方面是可伸缩的。
缺点:
无写 *** 作的高可靠性;
无写 *** 作的负载均衡;
在写 *** 作方面无伸缩性;
速度:
同单独服务器;在读 *** 作方面支持得较好
应用场合
读 *** 作密集型的、需要高可靠性和负载均衡的应用。
5 Standalone MySQL Servers(Functionally separated) (Active)
多台功能分离的单独服务器,没有高可靠性、负载均衡能力,明显缺点太多,不予考虑。
以上就是关于网站mysql数据库基本的问题全部的内容,包括:网站mysql数据库基本的问题、如何加强MySQL数据库的安全性、MySQL数据库安全之防止撰改的方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)