RHEL Server 6.3下MySQL5.5.25a源码安装
2015-10-01 12:55
639 查看
OS:RHEL Server 6.3
MySQL:mysql-5.5.25a.tar.gz
相关依赖包:
ncurses-5.9.tar.gz
bison-2.5.tar.gz
安装MySQL
一、安装依赖包
(1)ncurses
[root@test ~]# cd /data1/lnmp/
[root@test lnmp]# tar -xzf ncurses-5.9.tar.gz
[root@test lnmp]# cd ncurses-5.9
[root@test ncurses-5.9]# ./configure
[root@test ncurses-5.9]# make && make install
(2)bison
[root@test lnmp]# tar -xzf bison-2.5.tar.gz
[root@test lnmp]# cd bison-2.5
[root@test bison-2.5]# ./configure
[root@test bison-2.5]# make && make install
二、安装用于编译 MySQL 的 cmake 工具
[root@test lnmp]# tar -xzf cmake-2.8.8.tar.gz
[root@test lnmp]# cd cmake-2.8.8
[root@test cmake-2.8.8]#./configure
[root@test cmake-2.8.8]#make && make install
三、源码安装 MySQL
(1)建立运行MySQL的用户和组
[root@test ~]# groupadd mysql
[root@test ~]# useradd -M -g mysql -s /sbin/nologin mysql
(2)建立相关目录
[root@test ~]# mkdir /usr/local/mysql
[root@test ~]# mkdir /var/lock/mysql
[root@test ~]# mkdir /var/run/mysql
[root@test ~]# mkdir /var/log/mysql
[root@test ~]# mkdir /data1/mysql_db
[root@test ~]# chown -R mysql:mysql /usr/local/mysql/
[root@test ~]# chown mysql:mysql /var/run/mysql/
[root@test ~]# chown mysql:mysql /var/lock/mysql/
[root@test ~]# chown mysql:mysql /var/log/mysql/
[root@test ~]# chown mysql:mysql /data1/mysql_db/
------------------------------------------------------------------------------------------
注意:
之所以要创建/var/lock/mysql和/var/run/mysql目录,这是因为mysql server是用mysql这个用户启动的。而/var/lock/和/var/run/这两个目录只有root才有写的权限,所以mysql这个用户不能在其中建立mysql.lock和mysql.pid文件。所以要在/var/lock/和/var/run/这两个目录分别再建立一个目录,例如:mysql。并把这个目录所有者和群组改为mysql这具用户和群组。此种做法也是为了便于管理,例如把日志存放在/var/log/mysql/,日志只会在这一个目录下轮转,便于管理;#chown mysql:mysql /var/run/mysql/ /var/lock/mysql/ /var/log/mysql/
错误:
如果数据库 /data1/mysql_db/ 目录权限设置不正确,在启动 mysql 时可能会出现下面的错误。
[root@test ~]# tail /var/log/mysql.log
120713 17:15:21 mysqld_safe Starting mysqld daemon with databases from /data1/mysql_db
/usr/local/mysql/bin/mysqld: File './mysql-bin.index' not found (Errcode: 13)
120713 17:15:21 [ERROR] Aborting
120713 17:15:21 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
120713 17:15:21 mysqld_safe mysqld from pid file /var/run/mysql/mysql.pid ended
[root@test ~]#
解决方法:
这里是用mysql这个用户启动数据库的。所以要把建立的数据库目录 /data1/mysql_db/ 的所有者和群组更改为mysql。
[root@test ~]#chown -R mysql:mysql /data1/mysql_db/
这一步最好在初始化完数据库时再做一下。初始化完成后,可以先检查这个目录下的新建立的文件和目录的权限是否正确,如果正确则不用再做这一步了。
为了安全可以指定用户 mysql 初始化数据库:
#./mysql_install_db --user=mysql \
--defaults-file=/etc/my.cnf \
--basedir=/usr/local/mysql/ \
--datadir=/data1/mysql_db
----------------------------------------------------------------------------------------
(3)源码安装 MySQL
[root@test ~]# cd /data1/lnmp/
[root@test lnmp]# tar -xzf mysql-5.5.25a.tar.gz
[root@test lnmp]# cd mysql-5.5.25a
[root@test mysql-5.5.25a]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DINSTALL_MANDIR=/usr/share/man \
\
-DMYSQL_DATADIR=/data1/mysql_db \
-DWITH_READLINE=ON
-DWITH_SSL=system \
-DWITH_DEBUG=0 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DINSTALL_LAYOUT=STANDALONE \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_PROFILING=1 \
-DMYSQL_MAINTAINER_MODE=0 \
-DWITH_EMBEDDED_SERVER=1 \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_USER=mysql
[root@test mysql-5.5.25a]#make
[root@test mysql-5.5.25a]#make install
------------------------------------------------------------------------------------------
[root@test mysql-5.5.25a]# Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:83 (MESSAGE):
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on RedHat and derivates it is ncurses-devel.
Call Stack (most recent call first):
cmake/readline.cmake:127 (FIND_CURSES)
cmake/readline.cmake:217 (MYSQL_USE_BUNDLED_LIBEDIT)
CMakeLists.txt:268 (MYSQL_CHECK_READLINE)
-- Configuring incomplete, errors occurred!
错误原因:
这是因为没有安装curses library的原因,如果是Debian/Ubuntu平台则要安装libncurses5-dev,RHEL平台安装ncurses-devel。
解决方法:
[root@test mysql-5.5.25a]# yum install ncurses-devel #或源码安装
[root@test mysql-5.5.25a]# rm -rf CMakeCache.txt #删除CMakeCache.txt文件
[root@test mysql-5.5.25a]# cmake . #再重新编译,即可!
------------------------------------------------------------------------------------------
(4)建立 MySQL 配置文件
[root@test mysql-5.5.25a]# cp support-files/my-huge.cnf /etc/my.cnf
[root@test mysql-5.5.25a]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@test mysql-5.5.25a]# chmod 755 /etc/rc.d/init.d/mysqld
[root@test mysql-5.5.25a]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /ect/profile
[root@test mysql-5.5.25a]# source /etc/profile
------------------------------------------------------------------------------------------
注意:
在mysql-5.5.25a/support-files下共有5种my.cnf配置文件。
★ my-small.cnf:适用于小型数据库,该配置文件专为物理内存小于64MB的服务器而设计。
★ my-medium.cnf:适用于物理内存在32MB到64MB之间的专用于运行MySQL服务器,或物理内存在128MB以上。
★ my-large.cnf:适用于物理内存在512MB以上的专用于运行MySQL数据库的服务器。
★ my-huge.cnf:适用于物理内存在1GB到2GB之间的专用于运行MySQL数据库服务器。
★ my-innodb-heavy-4G.cnf:适用于服务器物理内存在4GB以上,且需要运行复杂查询的MySQL数据库。
------------------------------------------------------------------------------------------
(5)修改/etc/rc.d/init.d/mysqld 脚本文件
根据 cmake 时指定的配置参数和 my.cnf 配置文件中的参数修改 mysqld 这个脚本中的变量;my.cnf 配置文件中的参数优先于 cmake 时指定的参数。如果 my.cnf 配置文件没有设置对应的参数,则数据库运行时会以 cmake 时指定的参数为准。my.cnf 中参数优先级高于 cmake 时的配置参数。
[root@test ~]# vim /etc/rc.d/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data1/mysql_db
lockdir='/var/lock/mysql'
lock_file_path="$lockdir/mysql.lock"
mysqld_pid_file_path = /var/run/mysql/mysql.pid
(6)修改 /etc/my.cnf 配置文件
根据 cmake 时的配置修改 my.cnf 文件的部分参数。如果 my.cnf 配置文件没有设置对应的参数,则数据库运行时会以 cmake 时指定的参数为准。my.cnf 中参数优先级高于 cmake 时的配置参数。
[root@test ~]# vim /etc/my.cnf
# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
# The MySQL server
[mysqld]
user = mysql
port = 3306
socket = /tmp/mysql.sock
basedir = /usr/local/mysql
datadir = /data1/mysql_db
pid-file = /var/run/mysql/mysql.pid
log-error = /var/log/mysql/mysql.log
character-set-server = utf8
MySQL:mysql-5.5.25a.tar.gz
相关依赖包:
ncurses-5.9.tar.gz
bison-2.5.tar.gz
安装MySQL
一、安装依赖包
(1)ncurses
[root@test ~]# cd /data1/lnmp/
[root@test lnmp]# tar -xzf ncurses-5.9.tar.gz
[root@test lnmp]# cd ncurses-5.9
[root@test ncurses-5.9]# ./configure
[root@test ncurses-5.9]# make && make install
(2)bison
[root@test lnmp]# tar -xzf bison-2.5.tar.gz
[root@test lnmp]# cd bison-2.5
[root@test bison-2.5]# ./configure
[root@test bison-2.5]# make && make install
二、安装用于编译 MySQL 的 cmake 工具
[root@test lnmp]# tar -xzf cmake-2.8.8.tar.gz
[root@test lnmp]# cd cmake-2.8.8
[root@test cmake-2.8.8]#./configure
[root@test cmake-2.8.8]#make && make install
三、源码安装 MySQL
(1)建立运行MySQL的用户和组
[root@test ~]# groupadd mysql
[root@test ~]# useradd -M -g mysql -s /sbin/nologin mysql
(2)建立相关目录
[root@test ~]# mkdir /usr/local/mysql
[root@test ~]# mkdir /var/lock/mysql
[root@test ~]# mkdir /var/run/mysql
[root@test ~]# mkdir /var/log/mysql
[root@test ~]# mkdir /data1/mysql_db
[root@test ~]# chown -R mysql:mysql /usr/local/mysql/
[root@test ~]# chown mysql:mysql /var/run/mysql/
[root@test ~]# chown mysql:mysql /var/lock/mysql/
[root@test ~]# chown mysql:mysql /var/log/mysql/
[root@test ~]# chown mysql:mysql /data1/mysql_db/
------------------------------------------------------------------------------------------
注意:
之所以要创建/var/lock/mysql和/var/run/mysql目录,这是因为mysql server是用mysql这个用户启动的。而/var/lock/和/var/run/这两个目录只有root才有写的权限,所以mysql这个用户不能在其中建立mysql.lock和mysql.pid文件。所以要在/var/lock/和/var/run/这两个目录分别再建立一个目录,例如:mysql。并把这个目录所有者和群组改为mysql这具用户和群组。此种做法也是为了便于管理,例如把日志存放在/var/log/mysql/,日志只会在这一个目录下轮转,便于管理;#chown mysql:mysql /var/run/mysql/ /var/lock/mysql/ /var/log/mysql/
错误:
如果数据库 /data1/mysql_db/ 目录权限设置不正确,在启动 mysql 时可能会出现下面的错误。
[root@test ~]# tail /var/log/mysql.log
120713 17:15:21 mysqld_safe Starting mysqld daemon with databases from /data1/mysql_db
/usr/local/mysql/bin/mysqld: File './mysql-bin.index' not found (Errcode: 13)
120713 17:15:21 [ERROR] Aborting
120713 17:15:21 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
120713 17:15:21 mysqld_safe mysqld from pid file /var/run/mysql/mysql.pid ended
[root@test ~]#
解决方法:
这里是用mysql这个用户启动数据库的。所以要把建立的数据库目录 /data1/mysql_db/ 的所有者和群组更改为mysql。
[root@test ~]#chown -R mysql:mysql /data1/mysql_db/
这一步最好在初始化完数据库时再做一下。初始化完成后,可以先检查这个目录下的新建立的文件和目录的权限是否正确,如果正确则不用再做这一步了。
为了安全可以指定用户 mysql 初始化数据库:
#./mysql_install_db --user=mysql \
--defaults-file=/etc/my.cnf \
--basedir=/usr/local/mysql/ \
--datadir=/data1/mysql_db
----------------------------------------------------------------------------------------
(3)源码安装 MySQL
[root@test ~]# cd /data1/lnmp/
[root@test lnmp]# tar -xzf mysql-5.5.25a.tar.gz
[root@test lnmp]# cd mysql-5.5.25a
[root@test mysql-5.5.25a]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DINSTALL_MANDIR=/usr/share/man \
\
-DMYSQL_DATADIR=/data1/mysql_db \
-DWITH_READLINE=ON
-DWITH_SSL=system \
-DWITH_DEBUG=0 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DINSTALL_LAYOUT=STANDALONE \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_PROFILING=1 \
-DMYSQL_MAINTAINER_MODE=0 \
-DWITH_EMBEDDED_SERVER=1 \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_USER=mysql
[root@test mysql-5.5.25a]#make
[root@test mysql-5.5.25a]#make install
------------------------------------------------------------------------------------------
[root@test mysql-5.5.25a]# Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:83 (MESSAGE):
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on RedHat and derivates it is ncurses-devel.
Call Stack (most recent call first):
cmake/readline.cmake:127 (FIND_CURSES)
cmake/readline.cmake:217 (MYSQL_USE_BUNDLED_LIBEDIT)
CMakeLists.txt:268 (MYSQL_CHECK_READLINE)
-- Configuring incomplete, errors occurred!
错误原因:
这是因为没有安装curses library的原因,如果是Debian/Ubuntu平台则要安装libncurses5-dev,RHEL平台安装ncurses-devel。
解决方法:
[root@test mysql-5.5.25a]# yum install ncurses-devel #或源码安装
[root@test mysql-5.5.25a]# rm -rf CMakeCache.txt #删除CMakeCache.txt文件
[root@test mysql-5.5.25a]# cmake . #再重新编译,即可!
------------------------------------------------------------------------------------------
(4)建立 MySQL 配置文件
[root@test mysql-5.5.25a]# cp support-files/my-huge.cnf /etc/my.cnf
[root@test mysql-5.5.25a]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@test mysql-5.5.25a]# chmod 755 /etc/rc.d/init.d/mysqld
[root@test mysql-5.5.25a]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /ect/profile
[root@test mysql-5.5.25a]# source /etc/profile
------------------------------------------------------------------------------------------
注意:
在mysql-5.5.25a/support-files下共有5种my.cnf配置文件。
★ my-small.cnf:适用于小型数据库,该配置文件专为物理内存小于64MB的服务器而设计。
★ my-medium.cnf:适用于物理内存在32MB到64MB之间的专用于运行MySQL服务器,或物理内存在128MB以上。
★ my-large.cnf:适用于物理内存在512MB以上的专用于运行MySQL数据库的服务器。
★ my-huge.cnf:适用于物理内存在1GB到2GB之间的专用于运行MySQL数据库服务器。
★ my-innodb-heavy-4G.cnf:适用于服务器物理内存在4GB以上,且需要运行复杂查询的MySQL数据库。
------------------------------------------------------------------------------------------
(5)修改/etc/rc.d/init.d/mysqld 脚本文件
根据 cmake 时指定的配置参数和 my.cnf 配置文件中的参数修改 mysqld 这个脚本中的变量;my.cnf 配置文件中的参数优先于 cmake 时指定的参数。如果 my.cnf 配置文件没有设置对应的参数,则数据库运行时会以 cmake 时指定的参数为准。my.cnf 中参数优先级高于 cmake 时的配置参数。
[root@test ~]# vim /etc/rc.d/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data1/mysql_db
lockdir='/var/lock/mysql'
lock_file_path="$lockdir/mysql.lock"
mysqld_pid_file_path = /var/run/mysql/mysql.pid
(6)修改 /etc/my.cnf 配置文件
根据 cmake 时的配置修改 my.cnf 文件的部分参数。如果 my.cnf 配置文件没有设置对应的参数,则数据库运行时会以 cmake 时指定的参数为准。my.cnf 中参数优先级高于 cmake 时的配置参数。
[root@test ~]# vim /etc/my.cnf
# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
# The MySQL server
[mysqld]
user = mysql
port = 3306
socket = /tmp/mysql.sock
basedir = /usr/local/mysql
datadir = /data1/mysql_db
pid-file = /var/run/mysql/mysql.pid
log-error = /var/log/mysql/mysql.log
character-set-server = utf8
相关文章推荐
- 浅谈MySQL中优化sql语句查询常用的30种方法
- mysql主从复制原理
- mysql (一.建表)
- MySQL中的UNIX_TIMESTAMP函数使用总结 :
- Mysql安装各种问题
- 线上问题 - MySQL SQL state [HY000]; error code [1366]
- MysQL基本语句语法
- Ubuntu 安装 mysql
- MySQL的一些常用的SQL语句整理
- MySQL的一些常用的SQL语句整理
- mysql
- mysql 学习记录(一)--建表,增加,删除,修改,基本查询
- Mysql学习笔记(七)mysql编程基础之自定义函数。
- MySQL实用工具汇总
- mysql数据库主备同步部署
- MySQL备份工具mydumper备份
- entityframework使用CodeFirst创建MySql数据库出错的解决方法恢复
- MySQL千万级别表数据中提高RAND随机查询的实验
- Mysql数据库锁定机制
- mysql权限存取过程