要确保MySQL的安全,看看首先应当做点儿什么?
1.为操作系统和所安装的软件打补丁
如今打开计算机的时候,都会弹出软件的安全警告。
虽然有些时候这些警告会给我们带来一些困扰,但是采取措施确保系统打上所有的补丁是绝对有必要的。
利用攻击指令和Internet上丰富的工具,即使恶意用户在攻击方面没有多少经验,
也可以毫无阻碍地攻击未打补丁的服务器。即使用户在使用托管服务器,
也不要过分依赖服务提供商来完成必要的升级;相反,要坚持间隔性手动更新,
以确保和补丁相关的事情都被处理妥当。
2.禁用所有不使用的系统服务
始终要注意在将服务器放入网络之前,已经消除所有不必要的潜在服务器攻击途径。
这些攻击往往是不安全的系统服务带来的,通常运行在不为系统管理员所知的系统中。
简言之,如果不打算使用一个服务,就禁用该服务。
3.关闭端口
虽然关闭未使用的系统服务是减少成功攻击可能性的好方法,
不过还可以通过关闭未使用的端口来添加第二层安全。对于专用的数据库服务器,
可以考虑关闭除22(SSH协议专用)、3306(MySQL数据库使用的)和一些“工具”专用的(如123(NTP专用))等端口号在1024以下的端口。
简言之,如果不希望在指定端口有数据通信,就关闭这个端口。
除了在专用防火墙工具或路由器上做这些调整之外,还可以考虑利用操作系统的防火墙。
4.审计服务器的用户账户
特别是当已有的服务器再作为公司的数据库主机时,要确保禁用所有非特权用户,或者最好是全部删除。
虽然MySQL用户和操作系统用户完全无关,但他们都要访问服务器环境,
仅凭这一点就可能会有意地破坏数据库服务器及其内容。
为完全确保在审计中不会有遗漏,可以考虑重新格式化所有相关的驱动器,并重新安装操作系统。
5.设置MySQL的root用户密码
对所有MySQL用户使用密码。客户端程序不需要知道运行它的人员的身份。
对于客户/服务器应用程序,用户可以指定客户端程序的用户名。
例如,如果other_user没有密码,任何人可以简单地用mysql -u other_user db_name冒充他人调用mysql程序进行连接。
如果所有用户账户均存在密码,使用其他用户的账户进行连接将困难得多。