当你连接到MySQL服务器时,你应该使用密码。密码不是通过连接以明文形式传输的。MySQL 4.1.1中升级了客户端连接顺序期间的密码处理,使其非常安全。如果您仍然使用4.1.1以前风格的密码,则加密算法不如新算法强大。通过一些努力,能够嗅探客户端和服务器之间通信的聪明的攻击者可以破解密码。(见第6.1.2.4节“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 - u
如果other_user
db_name
other_user
没有密码。如果所有帐户都有密码,那么使用另一个用户的帐户进行连接就会困难得多。有关设置密码方法的讨论,请参见第6.2.10节“分配帐户密码”.
确保数据库目录中唯一具有读或写权限的Unix用户帐户是用于运行的帐户mysqld.
不要将MySQL服务器作为Unix运行
根
用户。这是非常危险的,因为任何使用文件
特权能够使服务器以根
(例如,~ root / . bashrc
).为了防止这样的情况发生,mysqld拒绝像根
方法显式指定的情况除外——用户=根
选择。mysqld可以(而且应该)作为普通的无特权用户运行。您可以创建一个名为
mysql
让一切更加安全。此帐户仅用于管理MySQL。开始mysqld作为一个不同的Unix用户,添加一个用户
选项中指定用户名的(mysqld)
集团的my.cnf
指定服务器选项的选项文件。例如:(mysqld)用户= mysql
这将导致服务器作为指定用户启动,无论是手动启动还是使用mysqld_safe或mysql.server.有关更多细节,请参见第6.1.5节“如何以普通用户运行MySQL”.
运行mysqld的Unix用户
根
并不意味着你需要改变根
用户名用户
表格MySQL帐户的用户名与Unix帐户的用户名无关.不要授予
文件
非管理用户的特权。权限的任何用户都可以在文件系统的任何位置写入文件mysqld守护进程。这包括服务器的数据目录,其中包含实现特权表的文件。为了使文件
-privilege操作更安全一点,文件生成用选择……到输出文件
不要覆盖现有的文件,每个人都可以写。的
文件
特权还可以用来读取任何文件,这些文件对于作为服务器运行的Unix用户来说是世界可读的或可访问的。有了这个特权,您可以将任何文件读入数据库表。这可能会被滥用,例如通过使用加载数据
加载/ etc / passwd
放入一个表中,然后可以用选择
.若要限制可读写文件的位置,请设置
secure_file_priv
系统的一个特定目录。看到第5.1.7节,“服务器系统变量”.不要授予
过程
或超级
非管理用户的特权。的输出mysqladmin processlist和显示PROCESSLIST
显示当前正在执行的任何语句的文本,因此允许查看服务器进程列表的任何用户都可以查看由其他用户发出的语句,例如SET password= password ('not_secure')
.mysqld的用户保留一个额外的连接
超级
特权,使MySQL根
即使所有正常连接都在使用中,用户也可以登录并检查服务器活动。的
超级
特权可用于终止客户端连接,通过更改系统变量的值更改服务器操作,以及控制复制服务器。不允许使用表的符号链接。方法可以禁用此功能
——skip-symbolic-links
选择。)如果你跑步,这一点尤其重要mysqld作为根
,因为任何对服务器数据目录有写访问权限的人都可以删除系统中的任何文件!看到第8.12.3.2节“在Unix上为MyISAM表使用符号链接”.存储的程序和视图应该使用中讨论的安全准则来编写第23.6节,“存储对象访问控制”.
如果不信任您的DNS,则应该在授权表中使用IP地址而不是主机名。在任何情况下,在使用包含通配符的主机名值创建授权表项时都应该非常小心。
如果希望限制单个帐户允许的连接数,可以通过设置
max_user_connections
变量mysqld.的创建用户
和改变用户
语句还支持资源控制选项,以限制允许帐户使用服务器的范围。看到第13.7.1.2节,“CREATE USER语句”,第13.7.1.1节,“ALTER USER语句”.如果插件目录是服务器可写的,那么用户就可以将可执行代码写入使用的目录中的文件中
选择……到DUMPFILE
.这可以通过制作plugin_dir
只读到服务器或通过设置secure_file_priv
到其中的目录选择
可以安全地进行写操作。