您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

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

添加时间:2015-6-2 21:13:31  添加: 思海网络 

 下载页面:http://dev.mysql.com/downloads/mysql/5.1.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-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-4G内存的服务器,但并不绝对。

# 指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。通过检查状态值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的安全设置

打开/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。

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

phpMyAdmin 3.3.x的安装与配置

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

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

下面开始安装:

1、解压下载到的文件,会得到一个目录,如 phpMyAdmin-3.3.7-all-languages
tar jxvf phpMyAdmin-3.3.7-all-languages.tar.bz2

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

3、为了安全起见,建议修改目录名,这样只有你自己知道phpMyAdmin的所在位置
mv /var/www/phpMyAdmin-3.3.7-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目录的读写权限,最好给777权限。)
改成这样就行了,然后重启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。

关键字:CentOS、Linux、MySQL、数据库

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2022 All Rights Reserved.
联系电话:(0757)22630313、22633833
公司地址: 广东省佛山市顺德区大良国际商业城A区4座3楼106号   邮编:528300
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站