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

centos mysql设置优化

添加时间:2012-4-1  添加: admin 

首先下载mysql-5.1.49.tar.gz
-yum remove mysql //删除CentOS上自带的老版本mysql
-groupadd mysql
-useradd -g mysql mysql
在编辑MYSQL时:
#./configure --prefix=/usr/local/mysql --with-charset=gb2312   --with-extra-charsets=all
执行后出现如下错误:
checking for tgetent in -ltermcap… no
checking for termcap functions library… configure: error: No curses/termcap library found

解决方法:
编译时加上路径即可解决,即
#./configure --prefix=/usr/local/mysql --with-charset=gb2312   --with-extra-charsets=all --with-named-curses-libs=/usr/lib/libncurses.so.5

如果是Ubuntu,需要安装.sudo apt-get install libncurses5-dev
如果Ubuntu上安装了VMwareTools-版本号.tar.gz则不需要安装libncurses5-dev,在编译时加上
--with-named-curses-libs=/usr/lib/libncurses.so.5

/bin/rm: cannot remove `libtoolT': No such file or directory错误
在执行./configure 之前,先执行:

# autoreconf --force --install

# libtoolize --automake --force

# automake --force --add-missing




编译配置参数
./configure –help 查看选项./configure \
–prefix=/mysql \
–localstatedir=/data \
–sysconfdir=/mysql \
–with-unix-socket-path=/mysql/mysql.sock \
–with-charset=utf8 \
–with-collation=utf8_general_ci \
–with-extra-charsets=gbk,latin1 \
–with-plugins=partition,blackhole,heap,innobase,myisam,ndbcluster,csv,federated \
–without-debug \
–enable-thread-safe-client \
–enable-assembler \
–enable-profiling \
–with-mysqld-ldflags=-all-static \
–with-client-ldflags=-all-static \
–with-mysqld-user=mysql \
–without-embedded-server \
–with-server-suffix=-community \
–with-tcp-port=3306
执行需要10分钟左右
说明:
–prefix=/mysql \ # 安装目录
–localstatedir=/data \ # 数据目录
–sysconfdir=/mysql \ #my.cnf目录
–with-unix-socket-path=/mysql/mysql.sock \ # socket文件目录
–with-charset=utf8 \ # 默认字符集
–with-collation=utf8_general_ci \ # 默认排序
–with-extra-charsets=gbk,latin1 \ # 其它字符集
–with-plugins=partition,blackhole,heap,innobase,myisam,ndbcluster,csv,federated \ #
存储引擘
–without-debug \ # 禁用dubug
–enable-thread-safe-client \ # 线程方式编译
–enable-assembler \ # 使用汇编模式
–enable-profiling \ # 启用profile功能
–with-mysqld-ldflags=-all-static \ # 静态编译
–with-client-ldflags=-all-static \ # 静态编译
–with-mysqld-user=mysql \ # 运行mysqld用户
–without-embedded-server \ # 禁用embedded
–with-server-suffix=-community \ # 为mysqld版本字符串添加后辍
–with-tcp-port=3306 # 端口
其中localstatedir是数据文件的安装位置
make
make install
这一步时间较长,可能要一二个小时
四,初始化数据库
/mysql/bin/mysql_install_db –basedir=/mysql –datadir=/data –user=mysql
五,设置文件权限
chown -R root:mysql /mysql
chown -R mysql:mysql /data
六,修改配置文件
cp /mysql/share/mysql/my-large.cnf /mysql/my.cnf
vi /mysql/my.cnf
[mysqld]下面添加
datadir=/data
log-error=/data/mysql.err
federated
ndbcluster
七,启动
./mysqld_safe –user=mysql &

./mysqld_safe –user=mysql –log-error=/data/mysql.err &
八,加入命令执行路径
vi /etc/profile
在#Path manipulation中
加入pathmunge /mysql/bin

# ln -sf /mysql/bin/mysql /sbin/mysql
# ln -sf /mysql/bin/mysqladmin /sbin/mysqladmin
九,更新root密码
mysql
set password=password(“123456〃);

mysqladmin -uroot password “12345678〃
删除空密码账号
delete from user where password=”";
十,加入服务
– 复制mysql启动脚本
cp /mysql/share/mysql/mysql.server /etc/init.d/mysqld
– 添加mysqld服务
chkconfig –add mysqld
– 设置mysqld在运行级3和5中启动
chkconfig –level 35 mysqld on
– 检查mysql的服务运行状态
chkconfig –list mysqld
– 启动mysql
service mysqld start
– 关闭
service mysqld stop
– 查看编译参数
cat /mysql/bin/mysqlbug | grep CONFIGURE_LINE



090517 13:34:15 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
090517 13:34:15 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
090517 13:34:15 mysqld_safe mysqld from pid file /usr/local/mysql/var/mail.bmitwap.com.pid ended
090517 13:38:35 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
解决办法 在运行初始化权限表的时候使用增加参数--datadir ,命令格式为:
shell> ..../mysql_install_db --user=mysql --datadir=/usr/local/mysql/var
这样问题就解决了。


mysql出现10061错误解决办法如果出现"ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)", 说明你的MySQL还没有启动。

解决办法:

第一步
删除c:\windowns下面的my.ini

第二步
打开c:\mysql\bin\winmysqladmin.exe 输入用户名 和密码

第三步 在dos下 输入 mysqld-nt -remove 删除服务
在接着输入 mysqld-nt -install

第四步 输入mysql 启动成功

※ 关于MySQL的1067错误解决方法 ※[转]



内容:
*************
1

安装MYSQL后更改了ROOT的密码后用
net startmysql
启动时我就遇到了这样的问题.使用以下命令后
c:\mysql\bin\mysqladmin-u root -p shutdown
再net start mysql就没有这个错误提示了!


*************
2
MySQL的1067错误
---------------------------
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-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

 

关键词:权限  数据库

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站