使用MySQLQ安全问题不能不注意。以下是MySQL提示?span lang="EN-US">23个注意事?span lang="EN-US">:
使用MySQLQ安全问题不能不注意。以下是MySQL提示?span lang="EN-US">23个注意事?span lang="EN-US">:
1.如果客户端和服务器端的连接需要跨ƈ通过不可信Q的网l,那么需要?span lang="EN-US">SSH隧道来加密该q接的通信?/p>
2.?span lang="EN-US">set password语句来修改用L密码Q三个步骤,?span lang="EN-US">“mysql -u root”登陆数据库系l,然后“mysql> update
mysql.user set password=password('newpwd')”Q最后执?span lang="EN-US">“flush
privileges”可以了?/p>
3.需要提防的d有,防偷听、篡攏V回放、拒l服务等Q不涉及可用性和定w斚w。对所有的q接、查询、其他操作用基?span lang="EN-US">ACL卌问控制列表的安全措施来完成。也有一些对SSLq接的支持?/p>
4.除了root用户外的其他M用户不允许访?span lang="EN-US">mysqlL据库中的user?span lang="EN-US">;
加密后存攑֜user表中的加密后的用户密码一旦泄Ԍ其他人可以随意用该用户名/密码相应的数据库;
5.?span lang="EN-US">grant?span lang="EN-US">revoke语句来进行用戯问控制的工作;
6.不用明文密码,而是使用md5()?span lang="EN-US">sha1(){单向的哈系函数来设|密?span lang="EN-US">;
7.不选用字典中的字来做密?span lang="EN-US">;
8.采用防火墙来L50%的外部危险,让数据库pȝw在防火墙后面工作,或放|在DMZ区域?span lang="EN-US">;
9.从因特网上用nmap来扫?span lang="EN-US">3306端口Q也可用telnet server_host 3306的方法测试,不能允许从非信Q|络中访问数据库服务器的3306?span lang="EN-US">TCP端口Q因此需要在防火墙或路由器上做设?span lang="EN-US">;
10.Z防止被恶意传入非法参敎ͼ例如where ID=234Q别人却输入where ID=234 OR 1=1D全部昄Q所以在web的表单中使用''?span lang="EN-US">""来用字符Ԍ在动?span lang="EN-US">URL中加?span lang="EN-US">%22代表双引受?span lang="EN-US">%23代表井号?span lang="EN-US">%27代表单引?span lang="EN-US">;传递未 查过的值给mysql数据库是非常危险?span lang="EN-US">;
11.在传递数据给mysql时检查一下大?span lang="EN-US">;
12.应用E序需要连接到数据库应该用一般的用户帐号Q只开攑ְ数必要的权限l该用户;
13.在各~程接口(C C++ PHP Perl Java
JDBC{?span lang="EN-US">)中用特?span lang="EN-US">‘逃脱字符’函数;
在因特网上?span lang="EN-US">mysql数据库时一定少用传输明文的数据Q而用SSL?span lang="EN-US">SSH的加密方式数据来传输;
14.学会使用tcpdump?span lang="EN-US">strings工具来查看传输数据的安全性,例如tcpdump -l -i eth0 -w
-src or dst port 3306 | strings。以普通用h启动mysql数据库服?span lang="EN-US">;
15.不用到表的联结W号Q选用的参?span lang="EN-US">
--skip-symbolic-links;
16.信?span lang="EN-US">mysql目录中只有启动数据库服务的用h可以Ҏ件有d写的权限;
17.不许?span lang="EN-US">process?span lang="EN-US">super权限付给非管理用P?span lang="EN-US">mysqladmin processlist可以列D出当前执行的查询文本;super权限可用于切断客Lq接、改变服务器q行参数状态、控制拷贝复制数据库的服务器;
18.file权限不付l管理员以外的用P防止出现load
data '/etc/passwd'到表中再?span lang="EN-US">select 昄出来的问?span lang="EN-US">;
19.如果不相?span lang="EN-US">DNS服务公司的服务,可以在主机名U允许表中只讄IP数字地址;
20.使用max_user_connections变量来mysqld服务q程Q对一个指定帐户限定连接数;
21.grant语句也支持资源控刉项;
22.启动mysqld服务q程的安全选项开养I--local-infile=0?span lang="EN-US">1 若是0则客LE序无法?span lang="EN-US">local load data了,赋权的一个例?span lang="EN-US">grant insert(user) on mysql.user to 'user_name'@'host_name';若?span lang="EN-US">--skip-grant-tablespȝ对M用户的访问不做Q何访问控Ӟ但可以用
mysqladmin flush-privileges?span lang="EN-US">mysqladmin reload来开启访问控?span lang="EN-US">;默认情况?span lang="EN-US">show databases语句Ҏ有用户开放,可以?span lang="EN-US">--skip-show-databases来关闭掉?/p>
23.到Error 1045(28000) Access
Denied for user 'root'@'localhost' (Using password:NO)错误Ӟ你需要重新设|密码,具体Ҏ?span lang="EN-US">:先用--skip-grant-tables参数启动mysqldQ然后执?span lang="EN-US"> mysql -u root
mysql,mysql>update user set password=password('newpassword') where
user='root';mysql>Flush privileges;Q最后重新启?span lang="EN-US">mysql可以了

]]>