您好,欢迎 来到润思科技-信息IT服务 长沙软件定 做外包公司!
0731-82519789

润思专业售 前支持

一"点"我帮您!

0731-82519789

24小时:13549648356

技术文档

您现在的位 置:主页 > 新闻中心 > 技术文档 >

怎样使MySQL在攻击者面 前保持安全

作者:长沙软件公 司

当你连接到 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语句也可以 支持 资源控制选 项来限制服务器对一个账户允许的使用范围。

友情链接:    弘鑫彩票官方网站   V博娱乐开奖网   V博娱乐计划   50彩票平台   50彩票代理