关于加强MYSQL安全的几点建议
通常我们在连接MySQL的服务器时,要使用到口令。这个口令在网络上传输的时候是加过密的。可是其它的内容都是以明文的方式来进行传输的。
当然如果担心这个不安全的话,可以使用压缩协议(MySQL3.22和以上版本),这样可以让其它的内容不那么容易就被看到。甚至为了让它更加安全,可以考虑下安装ssh。装上它之后,你就能在MySQL服务器与MySQL客户之间,搭建一条加密的TCP/IP连接。
为了使你的MySQL系统更安全,强烈建议考虑以下建议:
1.为每个MySQL用户使用口令。如果你不加设口令的话,其他人可以通过mysql--userother_userdatabase的方式访问你的数据库,在使用MySQL进行检测的时候系统也会给你相应的警告信息。
2.通过mysql_install_db脚本建立mySQL的授权表,你可以通过mysql-uroot进行测试,正确的情况下应该不会发生错误。更改root的密码:
shell>mysql-urootmysql
mysql>UPDATEuserSETPassword=PASSWORD(ew_password)
WHEREuser=root;
mysql>FLUSHPRIVILEGES;
3.不要用root方式启动MySQL服务。MySQL可以以任何用户启动。你可以通过添加一个新用户的方式来启动数据库服务(也就是mysql低权限运行)。这也不会对系统造成任何影响,因为MySQL的用户和Unix的用户根本来说就使不同的。
4.如果你把Unixroot用户口令放在了mysql.server脚本中,那么必须确保这个脚本只对root是可读的。检查那个运行mysqld的用户,确保这个用户是唯一在数据库目录下有读/写权限的用户。
5.不要把process权限给任何人。mysqladminprocesslist的输出会显示出当前正在执行的查询正文,这时如果有另外的用户发出一个UPDATEuserSETpassword=PASSWORD(ot_secure)查询,则会被有process权限的用户看得到查询。mysqld为有process权限的用户保留一个额外的连接,以便一个MySQLroot用户能登录并检查,即使所有的正常连接在使用。
6.不要把file权限给所有的用户。有这权限的用户能在拥有mysqld守护进程权限的文件系统那里写一个文件!file权限也可以被用来读取任何作为运行服务器的Unix用户可存取的文件。这可能被利用,例如,通过使用LOADDATA装载"/etc/passwd"进一个数据库表,然后它能用SELECT被读入。
7.如果你不信任你的DNS,你应当使用IP来取代主机名。在任何情况下,你应该非常小心地使用包含通配符的主机名!
相信通过以上的设置过后,你的Mysql主机应该已经相对比较安全,不是那么轻松就会让人攻陷的。