mysql数据库:MySQL数据库的授权原则

本文讲述了如何为用户分配合适权限几个重要思路方法被使用例如个用户user1能访问table1但不能访问table2但是如果用户user1带有ALTER权限可能通过使用ALTER TABLE将table2重命名为table1来打乱你设想

shutdown权限通过终止服务器可以被滥用完全拒绝为其他用户服务

·可能会产生严重安全漏洞权限

不要把PROCESS权限给所有用户mysqladmin processlist输出显示出当前执行查询正文如果另外用户发出个UPDATE user SET password=PASSWORD('not_secure')查询被允许执行那个命令任何用户可能看得到mysqld为有process权限用户保留个额外连接, 以便个MySQL root用户能登录并检查即使所有正常连接在使用

不要把FILE权限给所有用户有这权限任何用户能在拥有mysqld守护进程权限文件系统那里写个文件!为了使这更安全用SELECT ... INTO OUTFILE生成所有文件对每个人是可读并且你不能覆盖已经存在文件

FILE权限也可以被用来读取任何作为运行服务器Unix用户可存取文件这可能被滥用不仅有该服务器主机帐号用户可以读取它们而且有FILE权限任何客户机也可以通过网络读取它们数据库目录和系统各种文件可能成为全球范围共享文件!例如通过使用LOAD DATA装载“/etc/passwd”进个数据库表然后它能用SELECT被读入

下面过程介绍说明如何进行此项操作:

1、建具有LONGBLOB列表:

mysql> USE test; mysql> CREATE TABLE temp (b LONGBLOB);





2、用此表读取你要窃取文件内容:

mysql>LOAD DATA INFILE “/etc/passwd” INTO TABLE temp ->FIELDS ESCAPED BY “” LINES TERMINATED BY “”; mysql>SELECT * FROM temp;





3、可以这样窃取你数据表data:

mysql>LOAD DATA INFILE“./other_db/data.frm” INTO TABLE temp ->FIELDS ESCAPED BY“”LINES TERMINATED BY“”; mysql>SELECT * FROM temp INTO OUTFILE“./another_db/data.frm” ->FIELDS ESCAPED BY“”LINES TERMINATED BY“”; mysql>DELETE FROM temp; mysql>LOAD DATA INFILE“./other_db/data.MYD” INTO TABLE temp ->FIELDS ESCAPED BY“”LINES TERMINATED BY“”; mysql>SELECT * FROM temp INTO OUTFILE“./another_db/data.MYD” ->FIELDS ESCAPED BY“”LINES TERMINATED BY“”; mysql>DELETE FROM temp; mysql>LOAD DATA INFILE“./other_db/data.MYI” INTO TABLE temp ->FIELDS ESCAPED BY“”LINES TERMINATED BY“”; mysql>SELECT * FROM temp INTO OUTFILE“./another_db/data.MYI” ->FIELDS ESCAPED BY“”LINES TERMINATED BY“”; mysql>DELETE FROM temp;





然后用户就拥有个新表another.data可以对它进行完全访问

MySQL权限系统无法完成任务

些事情你不能用MySQL权限系统做到:

你不能明显地指定个给定用户应该被拒绝存取你不能明显地匹配个用户并且然后拒绝连接

你不能指定个用户有权创建立或抛弃个数据库中也不能创建或抛弃数据库本身

TAG: 数据库 mysql MySQL Mysql MYSQL 原则 授权


Tags:  mysql导入数据库 免费mysql数据库 mysql创建数据库 mysql数据库

延伸阅读

最新评论

发表评论