centos下 MySQL 5.5.23 CMake 安装笔记

mysql 最新的版本都需要cmake编译安装,估计以后的版本也会采用这种方式,所以特地记录一下安装步骤及过程,以供参考。

注意:此安装是默认centos下已经安装了最新工具包,比如GNU make, GCC, Perl, libncurses5-dev,如果在编译安装过程中发现有缺失的工具包,先yum install 单独下载安装再继续即可。

以下安装中涉及的几点需要提前说明的问题:

  1. 所有下载的文件将保存在 /usr/local/src/ 目录下

  2. mysql 将以mysql用户运行,而且将加入 service 开机自动运行

  3. mysql 将被安装在 /usr/local/mysql/ 目录下

  4. mysql 默认安装使用 utf8 字符集

  5. mysql 的数据和日志文件保存在 /var/mysql/ 对应目录下

  6. mysql 的配置文件保存于/var/mysql/my.cnf

一. Centos 用 wget 下载需要的软件,保存到目录 /usr/local/src/ 下

wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.23.tar.gz/from/http://mysql.he.net/
或者使用 wget http://mysql.he.net/Downloads/MySQL-5.5/mysql-5.5.23.tar.gz

wget http://www.cmake.org/files/v2.8/cmake-2.8.8.tar.gz

wget http://ftp.gnu.org/gnu/bison/bison-2.5.tar.gz

二. 安装 cmake

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd /usr/local/src

tar zxvf cmake-2.8.8.tar.gz
cd cmake-2.8.8
./bootstrap
gmake
gmake install
cd ../

tar zxvf bison-2.5.tar.gz
cd bison-2.5
./configure
make
make install
cd ../

三. 编译安装 MySQL 5.5.23

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql

tar xvf mysql-5.5.23.tar.gz
cd mysql-5.5.23/

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/var/mysql/data

make
make install

chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql

ln -s /usr/local/mysql/lib/libmysqlclient.so.16 /usr/lib/libmysqlclient.so.16

mkdir -p /var/mysql/
mkdir -p /var/mysql/data/
mkdir -p /var/mysql/log/
chown -R mysql:mysql /var/mysql/

cd support-files/
cp my-large.cnf /var/mysql/my.cnf (注意:my-large.cnf适用于1G内存左右的服务器,可以根据自己配置情况选用my-large.cnf 或 my-huge.cnf 等不同配置)
cp mysql.server /etc/init.d/mysqld

四. 配置启动MySQL 5.5.23

  1. 若有需要请先修改 mysql 的配置 my.cnf
1
vi /var/mysql/my.cnf
  1. mysql 初始化安装
1
2
3
4
5
/usr/local/mysql/scripts/mysql_install_db \
--defaults-file=/var/mysql/my.cnf \
--basedir=/usr/local/mysql \
--datadir=/var/mysql/data \
--user=mysql
  1. 将 mysql 加入开机启动
1
2
3
4
5
6
chmod +x /etc/init.d/mysqld
vi /etc/init.d/mysqld (编辑此文件,查找并修改以下变量内容:)
basedir=/usr/local/mysql
datadir=/var/mysql/data
chkconfig --add mysqld
chkconfig --level 345 mysqld on
  1. 启动 mysql
1
2
service mysqld start
Starting MySQL... SUCCESS!

五. 如果在启动时遇到:The server quit without updating PID file 这个错误可能是:

1.可能是/usr/local/mysql/data/rekfan.pid文件没有写的权限

解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data” 然后重新启动mysqld!

2.可能进程里已经存在mysql进程

解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!

3.可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。

解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。本人就是使用第三条方法解决的 !http://blog.rekfan.com/?p=186

4.mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。

解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data

5.skip-federated字段问题

解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

6.错误日志目录不存在

解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限

7.selinux惹的祸,如果是centos系统,默认会开启selinux

解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。

参考地址:http://hi.baidu.com/mucunzhishu/item/aa78b3eaa9f518ffe0a5d487

最后登录mysql命令行,执行:

1
GRANT ALL ON my_database.* TO my_user@'%' IDENTIFIED BY 'some_password';

添加用户访问权限