MySQL 从5.5开始改用cmake来编译源码代替./configure,
#本例为编译源码安装 mysql-5.5.20 :
在编译安装 MySQL 5.5.x 之前,需要最少安装的包有:
gcc4.4.6、gcc-c++、cmake、ncurses-devel、bison
【 建议升级centOS到6.2,否则安装gcc4.4.6 】
centOS 6.2 只需安装cmake、ncurses-devel、bison,后两个用yum -y install bison命令安装即可,cmake参下文
一、安装 cmake --前提软件。
tar zxvf cmake-2.8.6.tar.gz
cd cmake-2.8.6
./configure
gmake
gmake install
二、添加 Mysql 帐号 :mysql是否可登录,看自己需要
#不加密码默认禁止登录,参vi /etc/shadow
groupadd mysql
useradd -g mysql mysql
或添加不可登录的系统用户,视自己帐号管理需要来定:
# useradd -M -r --shell /sbin/nologin --home-dir /usr/local/mysql mysql
三、 安装 Mysql :安装前务必检查gcc等依赖软件是否安装了。
-----------------------------------------------------------
准备工作:
1、创建所需目录:
# mkdir -p /usr/local/mysql
# mkdir -p /var/lib/mysql --如果需要放mysql.sock到此目录则创建
2、可检查是否安装过mysql:
# rpm -qa |grep mysql 如果有安装mysql,将出现以下信息
mysql-5.0.77-4.el5_5.4
mysql-devel-5.0.77-4.el5_5.4 //这里显示安装了mysql和mysql-devel,没有则不显示
# rpm -e mysql mysql-devel //卸载MySQL安装包
3、下载MYSQL源码包:
# wget http://mysql.cs.pu.edu.tw/Downloads/MySQL-5.5/mysql-5.5.20.tar.gz
-----------------------------------------------------------
tar zxvf mysql-5.5.16.tar.gz 解压到/usr/local/src下。目录名为mysql-5.5.20
cd mysql-5.5.16
(1) 5.5+已改用cmake,其选项参考INSTALL-SOURCE最后部分:
(2) cmake -D= ,可以通过# cmake . -LH 查看支持的选项,
(3) 注意cmake后面有点号
(5) 5.5.20的MyISAM, MERGE, MEMORY, and CSV几个引擎总是强制静态编译进服务器。其它引擎想编译进入,用-DWITH_引擎名值_STORAGE_ENGINE=1 加入,引擎名值如下:
ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB),NDBCLUSTER (NDB), PARTITION (partitioning support), PERFSCHEMA (Performance Schema)。
开始安装:
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \
-DMYSQL_DATADIR=/mysqldata \ -- 数据库路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ --默认位置是/tmp/mysql.sock
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \ -- 指定是否允许本地执行LOAD DATA INFILE,默认OFF
-DWITH_SSL=yes \ -- 支持 SSL
-DWITH_DEBUG=0
【警告】不要使用-DWITH_EXTRA_CHARSETS(扩展字符集),否则会造成gbk,gb2312无法使用的现象,即使你指定了其值为gbk,gb2312也不行,该选项与-DEXTRA_CHARSETS=all有排斥,加入后-DEXTRA_CHARSETS=all无效。
# 以上未用到的其它参数:
-DWITH_COMMENT:指定编译备注信息。
-DMYSQL_TCP_PORT=3306指定端口。
-DSYSCONFDIR=/ mysqldata/3306 指定文件my.cnf位置。如设此选项则后面应复制my.cnf到此目录
其它选项参考INSTALL-SOURCE文件。
-------------------
//make编译过程中,如出现“警告:提领类型双关的指针将破坏强重叠规则”错误,可以忽略。
# make
# make install
#执行完make install后,在/etc/或cmake指定目录下就有my.cnf,但是很简洁,需要从support-files下复制一个。
四、配置my.cnf
#注意,my.cnf复制路径是根据-DSYSCONFDIR=路径值决定,如未设定,默认是/tmp/mysql.sock
cp support-files/my-huge.cnf /etc/my.cnf
# vi /etc/my.cnf
--------------------------------
(在mysqld下方加入3条参数)
basedir=/usr/local/mysql
datadir=/mysqldata
skip-name-resolve #此参数务必加,否则远程连接会很慢。
--------------------------------
mysql目录下的supports-files有几个配置适合:
1、my-small.cnf 内存小于64M适用。
2、my-medium.cnf 内存小于128M且mysql必须与其它服务共享系统资源时。
3、my-large.cnf 内存小于512M且MYSQL做为主服务时。
4、my-huge.cnf 内存有1~2G且mysql做为主服务时。
5、my-innodb-heavy-4G.cnf 内存4G以上,且主要使用innodb,并且连接数不多但查询较为复杂时。
五、目录权限设置:
# 权限设置要在下步服务启动前先执行,否则可能出现The server quit without updating PID file (/mysqldata/centos62.pid) 的错误提示
chown -R mysql.mysql /usr/local/mysql /var/lib/mysql
【关于权限设置的说明:最佳权限是chown -R root.mysql /usr/local/mysql ,但是如果data和mysql.sock是放在这个目录下,则要把/usr/local/mysql 自身(不含下面的文件及目录)以及/usr/local/mysql/data目录设成启动用户所有,如chown -R mysql.mysql /usr/local/mysql/data,chown mysql.mysql /usr/local/mysql,这样mysql.sock可以写到这个目录(否则服务启动时将失败),data文件也可以用mysql用户写入,但其它文件的所有者均为root 】
六、定制启动服务及服务启动权限
# 以下服务名可自定,如cp复制并改名为mysqld也可,这样chkconfig也要chkconfig mysqld on
# 复制mysql.server.sh或mysql.server均可,二者内容一样。
# 如:cp support-files/mysql.server.sh /etc/init.d/mysql,则下面服务名全部用mysql
cp support-files/mysql.server.sh /etc/init.d/mysqld --复制后默认是-rw-r--r--
chkconfig --add mysqld -- 增加 mysqld 为系统服务
#或chkconfig --level 235 mysqld on -- 自定 mysqld 自动启动级别。
// chkconfig mysqld on 这里可不先启动,以免和下面的mysqld_safe --user=mysql &冲突
chmod 700 /etc/init.d/mysqld -- 权限设定, 或chmod u+x /etc/init.d/mysqld
/etc/init.d/mysqld start 或 service mysqld start
#netstat -nat命令将可以看到3306端口已打开。
七、初始化数据库:在数据目录下创建系统数据库和系统表。
#注意要先切换到/usr/local/mysql目录下,不是在安装目录/usr/local/src/mysql-5.5.20下。
cd /usr/local/mysql
./scripts/mysql_install_db \
--datadir=/mysqldata \
--user=mysql \
--basedir=/usr/local/mysql
** --user表示这些库和表的所有者为mysql。cmake未指定basedir则此处可不设
[注意]mysql_install_db执行要在安装目录顶层执行./scripts/mysql_install_db,而不是进入scripts目录后执行./mysql_install_db,
如果以服务器的root角色执行,则安装的库将是root所有,需要再修改所有者和组。
八、启动 Mysql : /usr/local/mysql/bin下。
/usr/local/mysql/bin/mysqld_safe --user=mysql &
# 可能会停着不动,按回车就会回到shell
mysqld_safe比mysqld增加了一些安全特性,可以在出现错误时重新启动MYSQL服务器,并提供了完善的日志信息。如果没有特殊要求,一般使用mysqld_safe而不是mysqld来启动MYSQL服务器。
九、修改管理员密码
bin/mysqladmin -u root password 'password1'
或:
bin/mysqladmin -uroot password '123456' -S /usr/local/mysql/mysql.sock
如果mysql用户可以用于日常维护,还要同样方法设置mysql的密码。
十、设置/usr/bin下的软链接:以便以后不需要路径直接登录。
cd /usr/bin
ln -s /usr/local/mysql/bin/mysql mysql
ln -s /usr/local/mysql/bin/mysqladmin mysqladmin
....其它同样
chmod 700 -R /usr/local/mysql/bin/
或者不用设置软链接,直接:export PATH=$PATH:/usr/local/mysql/bin
十一、把man文件添加到man page中:
#vi /etc/man.config
在:
MANPATH /usr/man
MANPATH /usr/share/man
MANPATH /usr/local/man
下面添加一行:
MANPATH /usr/local/mysql/man