`

CentOS/linux下MySql 5.0.x的安装、优化及安全设置

阅读更多

原文地址:http://blog.chinaunix.net/u2/82530/showart_1956918.html

 

下载 页面:http://dev.mysql .com/downloads/mysql/5.0.html#downloads
到页面底部,找到Source downloads,这个是源码版本,下载第1个Tarball

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-stati c --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-locking

#不进行域名 反解析,注意由此带来的权限/授权问题
skip-name-resolve

#禁止MySQL中用“LOAD DATA LOCAL INFILE”命令。这个命令会利用MySQL把本地文件读到数据库中,然后用户就可以非法获取敏感信息了。网络 上流传的一些攻击方法中就有用它的,它也是很多新发现的SQL Injection攻击利用的手段!
local-infile = 0

#关闭远程连接,即3306端口。这是MySQL的默认监听端口。由于此处MySQL只服务于本地脚本 ,所以不需要远程连接。尽管MySQL内建的安全机制很严格,但监听一个TCP端口仍然是危险的行为,因为如果MySQL程序本身有问题,那么未授权的访问完全可以绕过MySQL的内建安全机制。 (你必须确定,你是否真的不需要远程连接mysql)
skip-networking

修改完my.cnf后,还需要对mysql的用户名、帐号、及默认数据库进行调整
首先先登录mysql, 在终端窗口输入  /home/mysql/bin/mysql -u root -p
然后会提示输入密码,输入正确密码后,会出现mysql> 提示符。

输入以下命令:

mysql>use mysql;
mysql>update user set user="centos" where user="root";       (将mysql的root用户名修改成centos,防止root的密码被暴力破解)
mysql>select Host,User,Password,Select_priv,Grant_priv from user;
mysql>delete from user where user='';                  (删除user用户)
mysql>delete from user where password='';               
(删除user用户)
mysql>delete from user where host='';                      (删除user用户)
mysql>drop database test;             (删除默认的test数据库)
mysql>flush privileges;                (刷新mysql的缓存,让以上设置立即生效)
mysql>quit;

为了使以上优化和安全设置生效,请重启Mysql服务或Linux。

关于Mysql的安全设置,这篇文章很值得一看
http://www.unixren.com/linux /bencandy.php?fid=21&id=459
-----------------------------------------------------------------------------------------------

phpMyAdmin 2.9.x的安装与配置

phpMyAdmin是一个用PHP编写的,可以通过互联网 控制和操作MySQL数据库的软件 。通过phpMyAdmin可以完全对数据库进行操作,例如建立、复制/删除数据等等。

下载地址: http://www.phpmyadmin.net
目前的最新版本是 2.9.1.1
使用phpMyAdmin的先决条件 :Apache(或者是Zeus、IIS)、PHP、MySql必须已经安装好,并且能够正常运行。因为phpMyAdmin是用PHP程序编写的,所以,你必须确定你的PHP可以正常连接到MySql。

下面开始安装:

1、解压下载到的文件,会得到一个目录,如 phpMyAdmin-2.9.1.1-all-languages-utf-8-only

2、将这个目录移动到你的网站根目录下
mv ./phpMyAdmin-2.9.1.1-all-languages-utf-8-only /var/www/

3、为了安全起见 ,建议修改目录名,这样只有你自己知道phpMyAdmin的所在位置
mv /var/www/phpMyAdmin-2.9.1.1-all-languages-utf-8-only /var/www/MyphpAdmin

4、修改phpMyAdmin的配置文件
cd /var/www/MyphpAdmin
mv config.sample.inc.php config.inc.php
config.inc.php 就是配置文件,需要将config.sample.inc.php更名过来,才能生效。
kate config.inc.php

以$cfg开头的选项都是可以修改的,根据你的实际情况,参与下面的文档来修改
$cfg['blowfish_secret'] = 'http '; /* cookie认证的加密算法,随便填一串字符即可 */
$cfg['Servers'][$i]['auth_type'] = 'cookie '; /* 登录时的认证方式。本机登录的设置成config,网络远程登录的需要设置成cookie */
$cfg['Servers'][$i]['host'] = 'localhost '; /* 主机名,可在终端下输入uname -n查看 */
$cfg['Servers'][$i]['connect_type'] = 'socket '; /* 使用tcp(Mysql在远程服务器上)或socket(Mysql在本机)方式来连接 */
$cfg['Servers'][$i]['compress'] = true ; /* 启用压缩以提高速度,如果访问不正常请改回false(php的版本必须高于4.3.0) */
$cfg['Servers'][$i]['extension'] = 'mysql '; /* 设定phpMyAdmin所支持的数据库类型 */
$cfg['Servers'][$i]['controluser'] = ''; /* Mysql的root用户名,不要填写 */
$cfg['Servers'][$i]['controlpass'] = ''; /* Mysql的root用户密码,不要填写 */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin '; /* 包含连接表结构的数据库名称。不用修改 */
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark '; /* 从 2.2.0 版本开始,phpMyAdmin 允许将经常使用的查询存储在书签中。不用修改 */
$cfg['Servers'][$i]['relation'] = 'pma_relation '; /* 从 2.2.4 版本开始,您可以定义一个关联表,它的字段是另一个表(外部表)的主键。不用修改 */
$cfg['Servers'][$i]['table_info'] = 'pma_table_info '; /* 不用修改 */
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords '; /* 不用修改 */
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages '; /* 不用修改 */
$cfg['Servers'][$i]['column_info'] = 'pma_column_info '; /* 不用修改 */
$cfg['Servers'][$i]['history'] = 'pma_history '; /* 不用修改 */
$cfg['UploadDir'] = ''; /* 不用修改 */
$cfg['SaveDir'] = ''; /* 不用修改 */

5、配置完毕后,就可以在浏览器 里使用了。
http://192.168.0.1/MyphpAdmin/    (注意大小写 要输入正确,否则会提示找不到页面)
如果安装没有问题的话,就会出现登录对话框,输入MySql的帐号和密码 就可以登陆了。

如果在登陆时出现[size=-1]session_start(): Failed to initialize storage module.
请将php.ini文件中如下两句进行修改
session.save_handler = files
session.save_path = "/tmp"       (请确认/tmp目录的读写权限)
改成这样就行了,然后重启apache

如果遇到 #2002 - 服务器没有响应 (or the local MySQL server's socket is not correctly configured) 这类问题

google 了一下,发现很多人被这个问题困扰,大家解决方法的思路都是围绕 mysql.sock。实际上,通过修改 mysql.sock 路径解决问题的可能性很小。大部分这类问题是由于 mysql 做了 ip 绑定(bind-address = 127.0.0.1)造成的。这里只需要将 $cfg['Servers'][$i]['host'] = 'localhost' 改为 '127.0.0.1' 就可以了。或者改成localhost.localdomain,这样改的依据是more /etc/hosts

 

 

分享到:
评论

相关推荐

    Linux 下安装 Mysql5.0

    本TXT文件为第三章Linux 下安装 Mysql5.0 测试环境:系统 CentOS 5.2 MySQL版本 5.0.67 第一步:下载mysql-5.0.67.tar.gz 第二步:安装mysql-5.0.67 第三步:编译·安装 第四步:安装后的配置  ...

    Linux上安装 Review Board

    Linux上安装 Review Board 图文教程,针对在 CentOS 系统下的安装步骤 进行 高亮标注。ReviewBoard 5.0 Linux安装步骤:...

    Centos_64bit安装JDK+tomcat

    2、安装配置Tomcat5.0和测试 所需要的软件: jdk: jdk-1_5_0_22-linux-amd64-rpm.bin tomcat: jakarta-tomcat-5.0.27.tar.gz mysql: mysql-standard-5.0.0-alpha-pc-linux-i686.tar.gz 下载后将安装文件放置于/...

    CentOS 5.2下安装Tomcat5.5

    部署tomcat服务使自动运行 三步完成安装,其他安装请见: 第一章:Linux 下安装 JDK 第三章Linux 下安装 Mysql5.0 第三章Linux 下安装 Oracle 10g 第五章Linux 下配置 CVS服务器 第六章Linux 下安装...

    CentOS安装LAMP(Apache,MySql,PHP)

    包括: 1.Apache安装需要的httpd-2.2.17.tar.gz libxml2-2.7.7.tar.gz 2.MySql安装包mysql-5.0.75.tar.gz 3.PHP安装包php-5.4.13.tar.gz 安装方法见: http://blog.csdn.net/xiaokaiexe/article/details/8748510

    CentOS 5.2 下安装JDK

    本TXT文件为第一章:Linux 下安装 JDK 测试环境:...Tomcat5.5 第三章Linux 下安装 Mysql5.0 第三章Linux 下安装 Oracle 10g 第五章Linux 下配置 CVS服务器 第六章Linux 下安装 Eclipse+MyEclipse

    Linux mysql命令安装允许远程连接的安装设置方法

    中文的参考:http://xieyu.blog.51cto.com/213338/59749英文的参考 How to Install MySQL 5.0 on Linux,How to Install PHP 5 on Linux ,How to Install Apache 2 on Linux Linux mysqlapache php 安装过程。...

    MySQL-Cluster架构图文详解

    基于CentOS5.0系统下MySQL-Cluster架构 一、配置环境: OS:Linux CentOS 5.0 MySQL: mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz (注意:需用Cluster版本,可在官网上下载 ...

    Linux 下配置 CVS服务器CentOS(CentOS 5.2)

    附加1:为用户分配权限 附加2:加密密码 附件3:创建多个仓库 其他安装请见: 第一章Linux 下安装 JDK 第二章Linux 下安装 Tomcat5.5 第三章Linux 下安装 Mysql5.0 第四章Linux 下安装 ...

    通信与网络中的如何修改Linux下MySQL5.0的默认连接数

    这段时间服务器崩溃2次,... 言归正传,我以centos 4.4 下面的mysql 5.0.33 手工编译版本为例说明:  vi /usr/local/mysql/bin/mysqld_safe  找到safe_mysqld编辑它,找到mysqld启动的那两行,在后面加上参数:

    gaussDB5.0版本轻量级安装包 Linux版本

    openGauss-Lite-5.0.0-CentOS-x86_64.tar。gaussDB5.0版本轻量级安装包 Linux版本

    linux下安装java-mysql-redis-tomcat.docx

    linux centos7.6 安装mysql5.7,redis5.0,tomcat8,jdk8,附上百度网盘的tar.gz安装包

    Apache和Tomcat整合总结.pdf

    Mysql:mysql-5.0 (linux光盘自带的RPM包) Apache:httpd-2.0.3 (linux光盘自带的RPM包) Tomcat:apache-tomcat-6.0.20.tar(Tomcat官网下的bin包) Mod_jk:Tomcat-connectors-1.2.30-src.tar.gz(tomcat...

    轻开电子商务系统(企业入门级B2C网站)20150617更新

    Mysql 数据库 5.0.x及以上 EditPlus 开发工具 2.x及以上 Linux环境 名称 分类 版本 CentOS 操作系统 5.x及以上 jdk Java虚拟机 1.5.x及以上 Tomcat Web服务器 5.x及以上 Easy do it (轻松互联网开发平台,简称轻...

    ansible-role-zabbix

    Zabbix角色安装和配置Zabbix 5.0的角色要求目前,该脚本可在Redhat / Centos 8.x.和Amazon linux 2上运行。该脚本可与MySQL,MariaDB,Nginx和PHP一起使用。角色变量可以在默认目录中更改所有变量。 默认值/ main....

    采用thinkphp5.0开发导航V1.0-集网址、资源、资讯于一体的导航系统

    源导航是一款集网址、资源、资讯于一体的导航系统,采用ThinkPHP 5.0开发! 适用的服务器/主机 普及知识:搭建一个网站的标配包括了服务器和域名 (源授权不支持虚拟主机)强烈建议使用:[服务器](标准版、系统选...

    kuaixia-sites:快侠镜像站群(授权使用)

    K 核心词,被 K 站点及时下架安装以 Centos 7.2 为例1 安装最新宝塔面板(略)2 极速安装nginx 1.16.0php-7.2mysql 5.7.26redis 5.0.53 PHP 配置安装 PHP 解密扩展删除 PHP 禁用函数putenvproc_openshell_exec安装 ...

    采用thinkphp 5.0开发导航V1.0-集网址 资源 资讯于一体的导航系统.zip

    采用thinkphp 5.0开发源导航V1.0-集网址、资源、资讯于一体的导航系统 源导航是一款集网址、资源、资讯于一体的导航系统,选用thinkphp 5.0开发! (源授权不支持虚拟服务器)强烈建议运用:[服务器](标准版、系统...

    PHP的Laravel框架结合MySQL与Redis数据库的使用部署

    相对于熟读官方文档,更重要的是要把框架环境搭起来。 零、环境介绍 操作系统:centOS 数据库: mysql 5.6 (阿里云RDS) ... Laravel 5.0 一、安装LNMP ... 是否安装Mysql也要看自己的情况,例如你使用阿

Global site tag (gtag.js) - Google Analytics