日期:2011-10-20 13:03:00  来源:本站整理

<b>CentOS下MySql 5.0.x的安装、优化及安全设置</b>[服务器安全]

赞助商链接



  本文“<b>CentOS下MySql 5.0.x的安装、优化及安全设置</b>[服务器安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

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可办理此问题.

  ———————————————————————————————–

  Mysql的优化设置

  翻开/etc/my.cnf文件,改正以下设置,假如没有,可手动增添.调整设置时,请量力而行,这与你的服务器的配置有关,分外是内存大小.以下设置对比合适于1G内存的服务器,但并不断对.

  # 指定索引缓冲区的大小,它决意索引处理的速度,特别是索引读的速度.通过查抄状况值Key_read_requests和Key_reads,可以知道 key_buffer_size设置能否公道.比例key_reads / key_read_requests应当尽大概的低,至少是1:100,1:1000更好(上述状况值可以利用show status like 'key_reads'得到).key_buffer_size只对MyISAM表起作用.即便你不利用MyISAM表,但是内部的暂时磁盘表是 MyISAM表,也要利用该值.可以利用查抄状况值created_tmp_disk_tables得知详情.

  key_buffer = 384M

  # 要求MySQL能有的衔接数目.当主要MySQL线程在一个很短时间内得到非常多的衔接恳求,这就起作用,然后主线程花些时间(固然很短)查抄衔接并且启 动一个新线程.back_log值指出在MySQL暂时终止答复新恳求之前的短时间内多少个恳求可以被存在仓库中.只有假如盼望在一个短时间内有很多连 接,你需求增添它,换句话说,这值对到来的TCP/IP衔接的侦听行列的大小.你的操作系统在这个行列大小上有它自己的限制.试图设定back_log高 于你的操作系统的限制将是无效的.默许数值是50

  back_log = 200

  #一个包的最大尺寸.消息缓冲区被初始化为 net_buffer_length字节,但是可在需求时增添到max_allowed_packet个字节.缺省地,该值太小必能捕捉大的(大概错误) 包.假如你正在利用大的BLOB列,你必须增添该值.它应当象你想要利用的最大BLOB的那么大.

  max_allowed_packet = 4M

  #答应的同时客户的数目.增添该值增添 mysqld要求的文件描写符的数目.这个数字应当增添,不然,你将常常看到 Too many connections 错误. 默许数值是100

  max_connections = 1024

  # 指定表高速缓存的大小.每当MySQL拜候一个表时,假如在表缓冲区中还有空间,该表就被翻开并放入此中,这样可以更快地拜候表内容.通过查抄峰值时间的 状况值Open_tables和Opened_tables,可以决意能否需求增添table_cache的值.假如你发现open_tables等于 table_cache,并且opened_tables在不断增长,那么你就需求增添table_cache的值了(上述状况值可以利用show status like 'Open_tables'得到).注意,不能盲目地把table_cache设置成很大的值.假如设置得太高,大概会造成文件描写符不足,从而造成性能 不安定大概衔接失利.

  table_cache = 512

  #每个线程排序所需的缓冲

  sort_buffer_size = 4M

  #当一个查询不断地扫描某一个表,MySQL会为它分配一段内存缓冲区.read_buffer_size变量掌握这一缓冲区的大小.假如你认为持续扫描举行得太慢,可以通过增添该变量值以及内存缓冲区大小提高其性能.

  read_buffer_size = 4M

  #加快排序操作后的读数据,提高读分类行的速度.假如正对远宏大于可用内存的表履行GROUP BY或ORDER BY操作,应增添read_rnd_buffer_size的值以加快排序操作背面的行读取.仍旧不懂得这个选项的用处……

  read_rnd_buffer_size = 8M

  #用于REPAIR TABLE.不懂得这个选项的用处,百度上找到的设置方向也是五花八门,有128M、64M、32M等,折中选一个.

  myisam_sort_buffer_size = 64M

  # 可以复用的保存在中的线程的数目.假若有,新的线程从缓存中获得,当断开衔接的时刻假若有空间,客户的线置在缓存中.假若有很多新的线程,为了提高性能可 以这个变量值.通过对比 Connections 和 Threads_created 状况的变量,可以看到这个变量的作用.

  thread_cache_size = 128

  #查询后果缓存.第一次履行某条SELECT语句的时刻,服务器记着该查询的文本内容和它返回的后果.服务器下一次碰到这个语句的时刻,它不会再次履行该语句.作为替换,它直接从查询缓存中的得到后果并把后果返回给客户端.

  query_cache_size = 32M

  #最大并发线程数,cpu数目*2

  thread_concurrency = 2

  #设置超不时间,能避免长衔接

  wait_timeout = 120

  #关闭不需求的表范例,假如你需求,就不要加上这个

  skip-innodb

  skip-bdb

  关于mysql的优化设置及查抄,这篇文章很值得一看 http://tech.itdb.cn/n/200607/27/n20060727_30398.shtml

  ———————————————————————————————–

  Mysql的安全设置

  翻开/etc/my.cnf文件,改正以下设置,假如没有,可手动增添.

  #撤消文件系统的外部锁

  skip-locki
  以上是“<b>CentOS下MySql 5.0.x的安装、优化及安全设置</b>[服务器安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .