10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册摘录

6.1.3保护MySQL免受攻击

当你连接到MySQL服务器时,你应该使用密码。密码不以明文形式在连接上传输。

所有其他信息都以文本的形式传输,任何能够观看连接的人都可以阅读。如果客户机和服务器之间的连接通过一个不受信任的网络,并且您担心这一点,那么可以使用压缩协议使流量更难破译。您还可以使用MySQL的内部SSL支持来使连接更加安全。看到第6.3节,“使用加密连接”。或者,使用SSH在MySQL服务器和MySQL客户端之间获得一个加密的TCP/IP连接。您可以在下面找到一个开源SSH客户端http://www.openssh.org/,并对开放源码和商业SSH客户端进行比较http://en.wikipedia.org/wiki/Comparison_of_SSH_clients

为了保证MySQL系统的安全性,你应该强烈考虑以下建议:

  • 要求所有MySQL帐户都有一个密码。客户端程序不一定知道运行它的人的身份。对于客户机/服务器应用程序,用户可以为客户机程序指定任何用户名,这是很常见的。例如,任何人都可以使用mysql程序通过调用它作为作为任何其他人连接mysql - uother_userdb_name如果other_user没有密码。如果所有账户都有密码,那么使用另一个用户的账户连接就会变得困难得多。

    有关设置密码方法的讨论,请参见第6.2.14节,“分配帐户密码”

  • 确保在数据库目录中唯一具有读或写权限的Unix用户帐户是用于运行的帐户mysqld

  • 不要将MySQL服务器作为Unix运行用户。这是非常危险的,因为任何使用文件权限可以使服务器创建文件为(例如,~ root / . bashrc)。为了防止这样的情况发生,mysqld拒绝以类显式指定的——用户=根选择。

    mysqld可以(也应该)作为普通的非特权用户运行。您可以创建一个名为mysql让一切更加安全。此帐户仅用于管理MySQL。开始mysqld作为不同的Unix用户,添加用户选项中指定用户名(mysqld)集团的my.cnf指定服务器选项的选项文件。例如:

    (mysqld)用户= mysql

    这将导致服务器作为指定用户启动,无论您手动启动还是使用mysqld_safemysql.server。更多信息请参见第6.1.5节,“如何以普通用户运行MySQL”

    运行mysqld作为Unix用户,而不是并不意味着您需要更改用户名用户表格MySQL帐户的用户名与Unix帐户的用户名无关

  • 不要授予文件非管理用户的特权。具有此权限的任何用户都可以在文件系统的任何位置使用mysqld守护进程。这包括服务器的数据目录,其中包含实现特权表的文件。为了使文件-privilege操作更安全一点,文件生成用选择……到输出文件不要覆盖现有的文件,每个人都可以写。

    文件权限还可以用于读取服务器作为其运行的Unix用户全世界可读或可访问的任何文件。有了这个特权,您可以将任何文件读入数据库表。这可能被滥用,例如,使用加载数据加载/ etc / passwd到一个表中,然后可以使用选择

    若要限制可以读取和写入文件的位置,请设置secure_file_priv系统到指定目录。看到第5.1.8节,“服务器系统变量”

  • 加密二进制日志文件和中继日志文件。加密有助于保护这些文件及其中可能包含的敏感数据不被外部攻击者滥用,也防止存储这些文件的操作系统的用户未经授权查看。在MySQL服务器上设置binlog_encryption系统变量。有关更多信息,请参见第17.3.2节,“二进制日志文件和中继日志文件加密”

  • 不要授予过程超级非管理用户的特权。的输出mysqladmin processlist显示PROCESSLIST显示当前正在执行的任何语句的文本,因此允许查看服务器进程列表的任何用户都可以查看其他用户发出的语句。

    mysqld为拥有CONNECTION_ADMIN超级特权,使MySQL用户可以登录和检查服务器活动,即使所有正常的连接正在使用。

    超级特权可以用来终止客户端连接,通过更改系统变量的值来更改服务器操作,以及控制复制服务器。

  • 不允许使用到表的符号链接。(此功能可以用——skip-symbolic-links选择。)如果你跑步,这一点尤其重要mysqld作为,因为任何对服务器数据目录有写访问权的人都可以删除系统中的任何文件!看到第8.12.2.2节,“在Unix上使用符号链接的MyISAM表”

  • 存储的程序和视图应该使用中讨论的安全指南来编写第25.6节,“存储对象访问控制”

  • 如果您不信任您的DNS,您应该在授予表中使用IP地址而不是主机名。在任何情况下,创建使用包含通配符的主机名值的授权表项时都应该非常小心。

  • 如果想要限制一个帐户允许的连接数,可以通过设置max_user_connections变量mysqld。的创建用户改变用户语句还支持资源控制选项,用于限制一个帐户允许的服务器使用范围。看到第13.7.1.3节,“CREATE USER Statement”,第13.7.1.1节,“ALTER USER Statement”

  • 如果插件目录是服务器可写的,那么用户可以使用选择……到DUMPFILE。这可以通过制作来预防plugin_dir只读到服务器或通过设置secure_file_priv到一个目录选择可以安全地进行写入。