说明:
操作系统:CentOS 5.9 64位
MySQL版本:mysql-5.6.10(注意是源码安装)
MySQL安装目录:/usr/local/mysql
MySQL数据库存放目录:/usrlocal/data
准备篇:
一、配置好IP、DNS 、网关,确保使用远程连接工具能够连接服务器,服务器yum命令可以正常使用
二、配置防火墙,开启3306端口
vi /etc/sysconfig/iptables #编辑
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #允许3306端口通过防火墙
特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面
添加好之后防火墙规则如下所示:
**********************************************************************************
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
**********************************************************************************
/etc/init.d/iptables restart #最后重启防火墙使配置生效
三、关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
shutdown -r now #重启系统
四 、系统约定
MySQL安装包存放位置:/usr/local/src
MySQL编译安装位置:/usr/local/mysql
五、下载软件包
1、下载MySQL
http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.10.tar.gz
2、下载cmake(MySQL编译工具)
http://www.cmake.org/files/v2.8/cmake-2.8.10.tar.gz
下载以上两个软件,并上传到/usr/local/src目录
六、安装编译工具及库文件(使用CentOS yum命令安装,安装的比较多,方便以后编译安装php、nginx等)
yum install make apr* autoconf automake curl curl-devel gcc gcc-c++ gtk+-devel zlib-devel
openssl openssl-devel pcre-devel gd kernel keyutils patch perl kernel-headers compat*
cpp glibc libgomp libstdc++-devel keyutils-libs-devel libsepol-devel libselinux-devel krb5-devel
libXpm* freetype freetype-devel freetype* fontconfig fontconfig-devel libjpeg* libpng* php-common php-gd
gettext gettext-devel ncurses* libtool* libxml2 libxml2-devel patch policycoreutils bison
安装篇
首先先检查系统是否自带有mysql(rpm -qa | grep mysql // 这个命令就会查看该操作系统上是否已经安装了mysql数据库)
显示:
mysql-libs-5.1.52-1.el6_0.1.i686(代表已经安装了,则需要卸载,否则没有安装mysql)
卸载方法:
yum -y remove mysql-libs-5.1.52-1.el6_0.1.i686
一、安装cmake
cd /usr/local/src #进入软件包存放目录
tar zxvf cmake-2.8.10.tar.gz #解压
cd cmake-2.8.10 #进入目录
./configure #配置(注意,这里需要先安装gcc-C++编译器 yum install gcc-c++)
make #编译
make install #安装
二、安装MySQL
groupadd mysql #添加mysql组
useradd -g mysql mysql -s /bin/false #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统
mkdir -p /usr/local/data #创建MySQL数据库存放目录
chown -R mysql:mysql /usr/local/data #设置MySQL数据库存放目录权限
mkdir -p /usr/local/mysql #创建MySQL安装目录
cd /usr/local/src #进入软件包存放目录
tar zxvf mysql-5.6.10.tar.gz #解压
cd mysql-5.6.10 #进入目录
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/data -DSYSCONFDIR=/etc #配置(配置更多请查看附加内容)
(这里注意下,正式环境会出现这样的异常
缺少ncurses-devel包信息如下:
-- 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!
原因:缺少ncurses-devel包,需要先删除CMakeCache.txt(注意这里是mysql解压包中的txt文件),再进行安装
缺少bison包信息如下:
Warning: Bison executable not found in PATH
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/mysql-5.5.27
原因:缺少bison包
为了避免出错,所以先安装ncurses-devel包和bison包
[root@localhost mysql-5.5.27]# yum install ncurses-devel
[root@localhost mysql-5.5.27]# yum install bison)
make #编译
make install #安装
rm -rf /etc/my.cnf #删除系统默认的配置文件(如果默认没有就不用删除)
cd /usr/local/mysql #进入MySQL安装目录
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/data #生成mysql系统数据库
ln -s /usr/local/mysql/my.cnf /etc/my.cnf #添加到/etc目录的软连接
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld #把Mysql加入系统启动
chmod 755 /etc/init.d/mysqld #增加执行权限
chkconfig mysqld on #加入开机启动
vi /etc/rc.d/init.d/mysqld #编辑
basedir=/usr/local/mysql #MySQL程序安装路径
datadir=/usr/local/data #MySQl数据库存放目录
service mysqld start #启动
vi /etc/profile #把mysql服务加入系统环境变量:在最后添加下面这一行
export PATH=$PATH:/usr/local/mysql/bin
下面这两行把myslq的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时可以不用指定mysql的库文件地址。
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
mkdir /var/lib/mysql #创建目录
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock #添加软链接
shutdown -r now #需要重启系统,等待系统重新启动之后继续在终端命令行下面操作
mysql_secure_installation #设置Mysql密码,根据提示按Y 回车输入2次密码
/usr/local/mysql/bin/mysqladmin -u root -p password "123456" #或者直接修改密码
service mysqld restart #重启
附加----------------------------------------------
·从mysql5.5起,mysql源码安装开始使用cmake了,设置源码编译配置脚本。
-DCMAKE_INSTALL_PREFIX=dir_name --设置mysql安装目录
-DMYSQL_UNIX_ADDR=file_name --设置监听套接字路径,这必须是一个绝对路径名。默认为/tmp/mysql.sock的中。
-DDEFAULT_CHARSET=charset_name --设置服务器的字符集。缺省情况下,MySQL使用latin1的(CP1252西欧)字符集。
cmake/character_sets.cmake文件包含允许的字符集名称列表。
-DDEFAULT_COLLATION=collation_name--设置服务器的排序规则。
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
存储引擎选项:
MyISAM,MERGE,MEMORY,和CSV引擎是默认编译到服务器中,并不需要明确地安装。
静态编译一个存储引擎到服务器,使用
-DWITH_engine_STORAGE_ENGINE= 1。
可用的存储引擎值有:
ARCHIVE,BLACKHOLE,EXAMPLE,FEDERATED,INNOBASE(InnoDB),PARTITION(partitioning,support),和PERFSCHEMA(Performance,Schema).
-DMYSQL_DATADIR=dir_name --设置mysql数据库文件目录
-DMYSQL_TCP_PORT=port_num ---设置mysql服务器监听端口,默认为3306
-DENABLE_DOWNLOADS=bool--是否要下载可选的文件。例如,启用此选项(设置为1),cmake将下载谷歌所使用的测试套件运行单元测试。
设置编译参数 记住cmake 后面接了一个点(.)
cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DMYSQL_DATADIR=/data/mysqldb
-DMYSQL_TCP_PORT=3306
-DENABLE_DOWNLOADS=1
-------------------------------------------------------------------------------
若在安装编译期间未设置mysq编码,数据库引擎等配置,可以通过以下方法配置。(MYsql 的配置放在my.cnf文件,这里通过设置编码方式,其它的一样)
1.2:[root@localhost ~]# find /etc/my.cnf ----------得到一个结果
3:如果2的结果是存在这个文件,转到5,否则转到4
4:若不存在这个文件,[root@localhost ~]# find / -iname *.cnf -print(一定要找文件名是 *.cnf的,不然你肯定找不到my.cnf)
------------------------得到如下结果
/usr/share/doc/MySQL-server-5.5.12/my-large.cnf
/usr/share/doc/MySQL-server-5.5.12/my-small.cnf
/usr/share/doc/MySQL-server-5.5.12/my-medium.cnf
/usr/share/doc/MySQL-server-5.5.12/my-huge.cnf(没用的不贴了)
5:从上面的任何一个文件中选一个,复制到etc下,并改名为my.cnf
[root@localhost ~]# pc /ust/share/doc/MySQL-server-5.5.12/my-huge.cnf /etc/my.cnf
6:开始修改my.cnf
vi /etc/my.cnf -------------显示my.cnf内容
在键盘上按i,然后进入Linux编辑模式,输入字符如下:
在 [client ] 下面加入 default-character-set=utf8
在[ mysqld ] 下面加 character_set_server=utf8 init_connect='SET NAMES utf8'(或者是SET NAMES 'utf8')
在[ mysql ] 下面加入 default-character-set=utf8
注:在[mysqld]下面添加的网上都说添加 default-character-set=utf8,我测试的时候不可以,因为mysqld不识别它,所以我改成
character_set_server=utf8
编辑完毕之后,按esc进入一般模式,然后输入:wq回车。
7:重启mysql
service mysqld restart
如果这里出现mysql is not running but lock exists,解决办法是rm /var/lock/subsys/mysql
8;最后,你可以看看mysql的编码方式是否修改成功
show variables like "character%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |