保持MySQL安全

2008-02-23 07:40:18来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  当您连接到MySQL服务器时,您应使用一个密码。密码不以明文在上传输。客户端连接序列中的密码处理在MySQL 4.1.1中已升级,很安全。假如您仍然使用pre-4.1.1-风格的密码,加密算法不如新算法强;通过一些工作,能够窃取客户端和服务器之间的通信的聪明的攻击者能够破解密码。假如客户端和服务器之间的连接通过不可信任网络,您应使用SSH隧道来加密通信。

  有其他信息以文本传送,能够被能够看到连接的任何人读取。假如您担心这个,您能够使用压缩协议来使通信更难以解密。要想使连接更加安全,您应使用SSH来获得加密的MySQL服务器和MySQL客户端之间的TCP/IP连接。(注释:您还能够使用MySQL内部OpenSSL支持。)

  为了使MySQL系统安全,强烈需要您考虑下列建议:

  ·对任何MySQL用户使用密码。客户端程式无需知道运行他的人员的身份。对于客户端/服务器应用程式,用户能够指定客户端程式的用户名。例如,假如other_user没有密码,任何人能够简单地用mysql -u other_user db_name冒充他人调用mysql程式进行连接。假如任何用户有密码,使用其他用户的账户进行连接要困难得多。

  要想更改用户的密码,应使用SET PASSWORD语句。还能够直接更新mysql数据库中的user表。例如,要更改任何root用户的MySQL账户的密码。  

shell> mysql -u root
  mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd')
  -> WHERE User='root';
  mysql> FLUSH PRIVILEGES;

  ·绝对不要作为Unix的root用户运行MySQL服务器。这样做很危险,因为任何具备FILE权限的用户能够用root创建文档(例如,~root/.bashrc)。为了防止,mysqld拒绝用root运行,除非使用--user=root选项明显指定。

  应能够(并且应该)用普通非特权用户运行mysqld。您能够创建单独的Unix中的mysql账户来以便使任何内容更加安全。该账户只用于管理MySQL。要想用其他Unix用户启动mysqld,增加user选项指定/etc/my.cnf选项文档或服务器数据目录的my.cnf选项文档中的[mysqld]组的用户名。例如:  

[mysqld]
  user=mysql

  该命令使服务器用指定的用户来启动,无论您手动启动或通过mysqld_safe或mysql.server启动。

  作为其他Unix用户而不用root运行mysqld,您无需更改user表中的root用户名,因为MySQL账户的用户名和Unix账户的用户名无关。

  ·不要允许使用表的符号链接。(能够用--skip-symbolic-links选项禁用)。假如您用root运行mysqld则特别重要,因为任何对服务器的数据目录有写访问权限的人则能够删除系统中的任何文档!

  ·确保mysqld运行时,只使用对数据库目录具备读或写权限的Unix用户来运行。

  ·不要将PROCESS或SUPER权限授给非管理用户。mysqladmin processlist的输出显示出当前执行的查询正文,假如另外的用户发出一个UPDATE user SET password=PASSWORD('not_secure')查询,被允许执行那个命令的任何用户可能看得到。

  mysqld为有SUPER权限的用户专门保留一个额外的连接,因此即使任何普通连接被占用,MySQL root用户仍能够登录并检查服务器的活动。

  能够使用SUPER权限来终止客户端连接,通过更改系统变量的值更改服务的器操作,并控制复制服务器。

  ·不要向非管理用户授予FILE权限。有这权限的任何用户能在拥有mysqld守护进程权限的文档系统那里写一个文档!为了更加安全,由SELECT ... INTO OUTFILE生成的任何文档对每个人是可写的,并且您不能覆盖已存在的文档。

  file权限也能够被用来读取任何作为运行服务器的Unix用户可读取或访问的文档。使用该权限,您能够将任何文档读入数据库表。这可能被滥用,例如,通过使用LOAD DATA装载“/etc/passwd”进一个数据库表,然后能用SELECT显示他。

  ·假如您不信任您的DNS,您应该在授权表中使用IP数字而不是主机名。在任何情况下,您应该很小心地使用包含通配符的主机名来创建 授权表条目!

  ·假如您想要限制单个账户允许的连接数量,您能够配置mysqld中的max_user_connections变量来完成。GRANT语句也能够支持 资源控制选项来限制服务器对一个账户允许的使用范围。


标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 公共MySQL的数据库服务器层

下一篇: 无法远程登入MySQL数据库解决办法