通州北大青鸟校区讲座:如何防止黑客入侵mysqld数据库?

昨天下午,北大青鸟通州校区教员杨老师在多功能厅,为同学们进行了一次技术讲座,主要是向同学们介绍一下,防止黑客入侵mysqld数据库的三种方法:
  
第一:
不要把file权限给所有的用户。有这权限的任何用户能在拥有mysqld守护进程权限的文件系统那里写一个文件!为了使这更安全一些,用SELECT ... INTO OUTFILE生成的所有文件对每个人是可读的,并且你不能覆盖已经存在的文件。file权限也可以被用来读取任何作为运行服务器的Unix用户可存取的文件。这可能被滥用,例如,通过使用LOAD DATA装载"/etc/passwd"进一个数据库表,然后它能用SELECT被读入。

如果你不信任你的DNS,你应该在授权表中使用IP数字而不是主机名。原则上讲,--secure选项对mysqld应该使主机名更安全。在任何情况下,你应该非常小心地使用包含通配符的主机名

第二:
不要作为Unix的root用户运行MySQL守护进程。mysqld能以任何用户运行,你也可以创造一个新的Unix用户mysql使一切更安全。如果你作为其它Unix用户运行mysqld,你不需要改变在user表中的root用户名,因为MySQL用户名与Unix 用户名没关系。你可以作为其它Unix用户编辑mysql.server启动脚本mysqld。通常这用su命令完成。对于更多的细节,见18.8 怎样作为一个一般用户运行MySQL。(北大青鸟通州校区

如果你把一个Unix root用户口令放在mysql.server脚本中,确保这个脚本只能对root是可读的。

检查运行mysqld的Unix用户是唯一的在数据库目录下有读/写权限的用户。

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

北大青鸟网上报名
北大青鸟招生简章