扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
当你连接一个MySQL服务器时,你通常应该使用一个口令。口令不以明文在连接上传输。
所有其它信息作为能被任何人读懂的文本被传输。如果你担心这个,你可使用压缩协议(MySQL3.22和以上版本)使事情变得更难。甚至为了使一切更安全,你应该安装ssh
(见http://www.cs.hut.fi/ssh)。用它,你能在一个MySQL服务器与一个MySQL客户之间得到一个加密的TCP/IP连接。
为了使一个MySQL系统安全,强烈要求你考虑下列建议:
other_user
没有口令,任何人能简单地用mysql -u other_user db_name
作为任何其它的人登录。对客户机/服务器应用程序,客户可以指定任何用户名是常见的做法。在你运行它以前,你可以通过编辑mysql_install_db
脚本改变所有用户的口令,或仅仅MySQL root
的口令,象这样: shell> mysql -u root mysql mysql> UPDATE user SET Password=PASSWORD('new_password') WHERE user='root'; mysql> FLUSH PRIVILEGES;
root
用户运行MySQL守护进程。mysqld
能以任何用户运行,你也可以创造一个新的Unix用户mysql
使一切更安全。如果你作为其它Unix用户运行mysqld
,你不需要改变在user
表中的root
用户名,因为MySQL用户名与Unix 用户名没关系。你可以作为其它Unix用户编辑mysql.server
启动脚本mysqld
。通常这用su
命令完成。对于更多的细节,见18.8 怎样作为一个一般用户运行MySQL。
root
用户口令放在mysql.server
脚本中,确保这个脚本只能对root
是可读的。
mysqld
的Unix用户是唯一的在数据库目录下有读/写权限的用户。
mysqladmin processlist
的输出显示出当前执行的查询正文,如果另外的用户发出一个UPDATE user SET password=PASSWORD('not_secure')
查询,被允许执行那个命令的任何用户可能看得到。mysqld
为有process权限的用户保留一个额外的连接, 以便一个MySQL root
用户能登录并检查,即使所有的正常连接在使用。
拥有mysqld
守护进程权限的文件系统那里写一个文件!为了使这更安全一些,用SELECT ... INTO OUTFILE
生成的所有文件对每个人是可读的,并且你不能覆盖已经存在的文件。file权限也可以被用来读取任何作为运行服务器的Unix用户可存取的文件。这可能被滥用,例如,通过使用LOAD DATA
装载“/etc/passwd”进一个数据库表,然后它能用SELECT
被读入。
--secure
选项对mysqld
应该使主机名更安全。在任何情况下,你应该非常小心地使用包含通配符的主机名! 下列mysqld
选项影响安全:
--secure
gethostbyname()
系统调用返回的IP数字被检查,确保他们解析回到原来的主机名。这对某些外人通过模仿其它主机获得存取权限变得更难。这个选项也增加一些聪明的主机名检查。在MySQL3.21里,选择缺省是关掉的,因为它有时它花很长时间执行反向解析。MySQL 3.22缓存主机名并缺省地启用了这个选项。
--skip-grant-tables
mysqladmin reload
,你能告诉一个正在运行的服务器再次开始使用授权表。)
--skip-name-resolve
Host
的列值必须是IP数字或localhost
。
--skip-networking
mysqld
的连接必须经由Unix套接字进行。这个选项对使用MIT-pthreads的系统是不合适的,因为MIT-pthreads包不支持Unix套接字。 如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者