MYSQL数据库Mysql数据库中用户授权原则分析
《MYSQL数据库Mysql数据库中用户授权原则分析》要点: 在为mysql数据库中用户进行授权时,秉承如下的原则: 1,服务器重新启动的情况 2,被服务器立即应用的情况 3,直接修改授权表的情况 4,对现有客户连接的影响情况 5,mysql用户授权的原则MYSQL入门 一般应该遵守如下的这些规则.MYSQL入门 只有root用户拥有授权表的改写权MYSQL入门 不要把授权表的改写权授予除root用户之外的其它用户(当然,如果你可以用另一个用户代替root用户进行管理,以增加平安性).因为这样,用户可以通过改写授权表而推翻现有的权限.产生平安漏洞.MYSQL入门 一般情况下,你可能不会犯这个错误,但是在安装新的分发,初始授权表之后.这个漏洞是存在的,如果你不了解这时授权表的内容你可能会犯错误.MYSQL入门 在Unix(Linux)上,在依照手册的指令安装好MySQL后,你必须运行mysql_install_db脚本建立包含授权表的mysql数据库和初始权限.在Windows上,运行分发中的Setup程序初始化数据目录和mysql数据库.假定服务器也在运行.MYSQL入门 当你第一次在机器上安装MySQL时,mysql数据库中的授权表是这样初始化的: 一般地,建议你删除匿名用户记录: 更进一步,同时删除其他授权表中的任何匿名用户,有User列的表有db、tables_priv和columns_priv.MYSQL入门 另外要给root用户设置暗码.MYSQL入门 关于用户、口令及主机的设置 在运行它之前,可以通过编辑 mysql_install_db脚本改变所有用户的口令,或仅仅MySQL root的口令,例如: mysql> UPDATE user SET Password=PASSWORD(new_password) -> WHERE user=root; mysql> FLUSH PRIVILEGES; 2)、删除匿名用户 可以这样删除匿名用户: mysql>delete from user where User=””; 3)、把稳使用通配符的主机名,尽量缩小主机名的范围,适合用户的主机就足够了,不要让用户不使用的主机留在授权表里.MYSQL入门 4)、如果不信任DNS,应该在授权表中使用IP数字而不是主机名. 授予用户合适的权限MYSQL入门 1)、授权用户足够使用的权限,不要赋予额外的权限. 2)、可能会产生平安漏洞的权限MYSQL入门 grant权限允许用户放弃他们的权限给其他用户.2个有不同的权限并有grant权限的用户可以合并权限.MYSQL入门 alter权限可以用于通过重新命名表来推翻权限系统.因为ALTER权限可能以你没有设想的任何方法被使用.例如,一个用户user1能拜访table1,但不能拜访table2.但是如果用户user1带有ALTER权限可能通过使用ALTER TABLE将table2重命名为table1来打乱你的设想.MYSQL入门 shutdown权限通过终止服务器可以被滥用完全拒绝为其他用户服务 .MYSQL入门 3)、可能会产生严重平安漏洞的权限MYSQL入门 不要把PROCESS权限给所有用户.mysqladmin processlist的输出显示出当前执行的查询正文,如果另外的用户发出一个UPDATE user SET password=PASSWORD(not_secure)查询,被允许执行那个命令的任何用户可能看得到.mysqld为有process权限的用户保存一个额外的连接,以便一个MySQL root用户能登录并检查,即使所有的正常连接在使用.MYSQL入门 不要把FILE权限给所有的用户.有这权限的任何用户能在拥有mysqld守护进程权限的文件系统那里写一个文件!为了使这更平安一些,用SELECT ... INTO OUTFILE生成的所有文件对每个人是可读的,并且你不能覆盖已经存在的文件.MYSQL入门 FILE权限也可以被用来读取任何作为运行服务器的Unix用户可存取的文件.这可能被滥用,因为不仅有该服务器主机帐号的用户可以读取它们,而且有FILE权限的任何客户机也可以通过网络读取它们.你的数据库目录和系统的各种文件可能成为全球范围共享的文件!例如,通过使用LOAD DATA装载“/etc/passwd”进一个数据库表,然后它能用SELECT被读入.MYSQL入门 mysql用户授权的实例分享.MYSQL入门 1、建具有LONGBLOB列的表: mysql> CREATE TABLE temp (b LONGBLOB); 2、用此表读取你要窃取的文件的内容: ->FIELDS ESCAPED BY? “”? LINES TERMINATED BY? “”; mysql>SELECT * FROM temp; 3、可以这样窃取你的数据表data: ->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权限系统无法完成的任务MYSQL入门 有一些事情不能用MySQL权限系统做到: 2)、不能指定一个用户有权创建立或抛弃一个数据库中的表,也不能创建或抛弃数据库自己.MYSQL入门 编程之家PHP培训学院每天发布《MYSQL数据库Mysql数据库中用户授权原则分析》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |