/ 中存储网

CentOS Linux系统安装配置MySQL 5.1.x数据库

2014-07-13 16:21:15 来源:中存储网

CentOS Linux下MySQL 5.1.x的安装、优化和安全配置

下载页面:http://dev.mysql.com/downloads/mysql/5.1.html#downloads

groupadd mysql

新建一个名为mysql的用户组

useradd -g mysql mysql

在mysql用户组下新建一个名为mysql的用户

gunzip < mysql-VERSION.tar.gz | tar -xvf -

解压下载到的.gz文件

cd mysql-VERSION

进入解压后的目录

CFLAGS=″-O3 -mcpu=pentium4″ CXX=gcc CXXFLAGS=″-O3 -march=pentium4 -felide-constructors -fno-exceptions -fno-rtti″ ./configure –prefix=/home/mysql/ –without-debug –with-unix-socket-path=/home/mysql/tmp/mysql.sock –with-client-ldflags=-all-static –with-mysqld-ldflags=-all-static –enable-assembler –with-extra-charsets=gbk,gb2312,utf8 –without-innodb –without-isam –with-pthread –enable-thread-safe-client

配置mysql

gcc的相关参数:

-O3

-O

-O1

优化.对于大函数,优化编译占用稍微多的时间和相当大的内存.

不使用`-O’选项时,编译器的目标是减少编译的开销,使编译结果能够调试.锞涫嵌懒⒌:如果在 两条语句之间用断点中止程序,你可以对任何变量重新赋值,或者在函数体内把程序计数器指到其他语句,以及从源程序中 精确地获取你期待的结果.

不使用`-O’选项时,只有声明了register的变量才分配使用寄存器.编译结果比不用 `-O’选项的PCC要略逊一筹.

使用了`-O’选项,编译器会试图减少目标码的大小和执行时间.

如 果指定了`-O’选项, `-fthread-jumps’和`-fdefer-pop’选项将被 打开.在有delay slot的机器上, `-fdelayed-branch’选项将被打开.在即使没有帧指针 (frame pointer)也支持调试的机器上, `-fomit-frame-pointer’选项将被打开.某些机器上 还可能会打开其他选项.

-O2

多优化一些.除了涉及空间和速度交换的优化选项,执行几乎所有的优化工作.例如不进行循环展开(loop unrolling)和函数内嵌(inlining).和-O选项比较,这个选项既增加了编译时间,也提高了生成代码的 运行效果.

-O3

优化的更多.除了打开-O2所做的一切,它还打开了-finline-functions选项.

-O0

不优化.

如果指定了多个-O选项,不管带不带数字,最后一个选项才是生效的选项。

-mcpu=pentium4 根据CPU类型优化编译,可以让你的mysq表现更好!可选项目很多:i386, i486, i586, i686, pentium, pentium-mmx, pentiumpro, pentium2, pentium3, pentium4, k6, k6-2, k6-3, athlon, athlon-tbird, athlon-4, athlon-xp,athlon-mp,winchip-c6, winchip2 , c3.

-fomit-frame-pointer 对于不需要栈指针的函数就不在寄存器中保存指针,因此可以忽略存储和检索地址的代码,并将寄存器用于普通用途。所有”-O”级别都打开着一选项,但仅在调试器可以不依靠栈指针运行时才有效。建议不需要调试的情况下显式的设置它。

configure的相关参数:

–prefix=/home/mysql/ 指定安装目录

–without-debug 去除debug模式

–with-extra-charsets=gbk,gb2312,utf8 添加gbk,gb2312,utf8中文字符支持

–with-pthread 强制使用pthread库(posix线程库)

–enable-assembler 使用一些字符函数的汇编版本

–enable-thread-safe-client 以线程方式编译客户端

–with-client-ldflags=-all-static 以纯静态方式编译客户端

–with-mysqld-ldflags=-all-static 以纯静态方式编译服务端

–without-isam 去掉isam表类型支持,现在很少用了,isam表是一种依赖平台的表

–without-innodb 去掉innodb表支持,innodb是一种支持事务处理的表,适合企业级应用

make

编译

make install

安装

cp support-files/my-medium.cnf /etc/my.cnf

将mysql的配置文件copy到/etc目录下,并更名为my.cnf

/home/mysql下面有5个my-xxxx.cnf文件

my-small.cnf 最小配置安装,内存<=64M,数据数量最少

my-large.cnf 内存=512M

my-medium.cnf 32M<内存<64M,或者内存有128M,但是数据库与web服务器公用内存

my-huge.cnf 1G<内存<2G,服务器主要运行mysql

my-innodb-heavy-4G.cnf 最大配置安装,内存至少4G

cd /home/mysql

进入安装目录

bin/mysql_install_db –user=mysql

以mysql用户的身份建立数据表

chown -R root .

将mysql的主目录(即/home/mysql)的属主设为root用户。这是官方文档上的命令,但奇怪的是,如果将mysql的主目录属主设成root用户,在运行了下面的bin/mysqld_safe –user=mysql &后则不能启动mysql。问题出在“权限”上,运行chown -R mysql .则可以用下面的命令正常启动mysql。难道官方文档有错?希望大家一起来探讨一下。

chown -R mysql var

将var目录的属主设为mysql用户

chgrp -R mysql .

将mysql的主目录的属主设为mysql用户组(注意:和前面的命令不一样,这个命令是对用户组进行赋权)

bin/mysqld_safe –user=mysql &

启动mysql,如果一切正常的话,运行此命令后,不会有任何提示。

bin/mysqladmin -u root password password

修改root用户的密码,这里的root用户指的是mysql的root用户,与Linux的root用户无关。绿色的password就是你需要设置的新密码,牢记!

bin/mysql -u root -p

如果正常的话,用这个名字可以登录,在输入密码后,出现mysql > 的提示符表明登录成功。用quit命令可退出

以下命令用于设置mysql开机自动运行

cd mysql-VERSION

再次进入解压后的目录,即源码目录。

cp support-files/mysql.server /etc/init.d/mysql

将mysql.server这个文件copy到/etc/init.d/目录下,并更名为mysql

chmod 755 /etc/init.d/mysql

给/etc/init.d/mysql这个文件赋予“执行”权限

chkconfig –level 345 mysql on

加入到开机自动运行,运行级别为3 4 5

service mysql restart

重启mysql服务

Q:为什么我用PHP连接Mysql时提示“connect fail:Can’t connect to local MySQL server through socket ‘/home/mysql/tmp/mysql.sock‘ (13)”

A: 这是因为PHP没能正常的连接到Mysql套接字,即mysql.sock文件。首先,检查/home/mysql/tmp/目录下是否有 mysql.sock这个文件。如果没有,可能是mysql没有正常启动;如果有,可能是/home/mysql/tmp/这个目录的权限不够,用chmod 755 /home/mysql/tmp可解决此问题。