CentOS Linux下MySQL 5.1.x的安装

  • 来源: 驱动中国 作者: itcom   2012-10-30/08:48
  • 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可解决此问题。


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多