Skip to content


mysql笔记(1)

1.如果在创建了任何数据库表之后改变字符集,必须对每个表运行:
myisamchk -r -q –set-character-set=charset

2. mysql 4.0以上版本默认innoDB包括在所有二进制分发版中,不需要用mysql-max服务器只是用来获取innoDB支持.

3.在编译mysql时,建议不要使用libg++或者libstdc++,因为只会增加二进制空间而不会有任何好处。编译时修改以下环境变量
CC=gcc
CFLAGS=-03
CXX=gcc

CXXFLAGS=-03
export CC CFLAGS CXX CXXFLAGS

4.查看数据库支持的引擎 show engines;
5.bin目录下的脚本功能:
mysql.server: 服务器的启动脚本
mysqld_multi: 管理多个mysql服务器的程序

6.使用mysqld_multi前确保理解传给mysqld服务器的选项的含义以及你为什么想要独立的mysqld进程。在相同的数据目录下使用多个mysqld服务器是危险在线程,系统中,在相同的数据目录下启动多个服务器不会得到超性能。

7.要想使用myisamchk必须关闭服务器,要避免需求,使用mysql,mysql monitor中的chech table和repair table本检查维护myisam.

8.服务器启动后通过连接服务器并执行set global var_name语句可以更改全局变量,要想更改全局变量,必须具有super权限.服务器还为每个客户端连接维护会话变量,连接时使用相应全局变量的当前值对客户端会话变量进行初始化,客户可能通过set session var_name进行动态改动会话变量.

9.show variables; 查看系统变量及其值。

10.注意:不要让任何人(除了mysql root 帐号)访问mysql数据库中的user表.这个很关键,加密的密码才是mysql中的真正的密码。不要授于超过需求的权限。决不能为所有主机授权。

11.检查mysql用户安全的最简方案:
1.试试msyql -u root,如果能够成功而没有要任何密码,则说明有问题
2.通过show grants检查权限,然后使用revoke删除不再需要的权限。
3.不要将纯文本密码保存到数据库中,不要从词典中选择密码,有专门的程序可以破解它们。
4.试试从internet使用nmap工具扫描端口,另一种检查是否mysql端口打开的简单方式是从远程机器试试下面的命令:telnet server_host 3306 如果得到连接并得到一些垃圾字符,则端口打开着,则应从防火增或路由器上关闭.
5.在防止sql注入的时候不仅要检查字符串类型的数据,还要检查数字型数据.
6.试试用web形式输入单引号和双引号,如果得到任何形式的mysql错误,立即分析原因。
7.试试修改动态url,可以在其中添加%22(’”‘),%23(’#')和%27(”’).
8.将数据传给mysql之前先检查其大小。
9.用管理账户之外的用户名将应用程序连接到数据库,不要给应用程序任何不需要的访问权限。
10.学会使用tcpdump和strings工具,大多数情况下,你可以使用下面的命令检查是否mysql数据流未加密:
tcpdump -l -i etho -w – src or dst port 3306 | strings
11.不要用root用户运行mysql服务器,因为任何具有fle权限的用户能够用root建文件,应该用普通非特权用户运行mysqld。增加/etc/my.cnf选项文件服务器数据目录中的mysql组的用户名.
12.确保mysql运行时,只使用对数据库目录具有读或写权限的用户来运行 .

Posted in linux, mysql, 技术.

Tagged with , , .


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.