1.1 实验环境
操作系统:CentOS6.7
虚拟机:VMware Workstation
数据库系统:mysql-5.6.15.tar.gz
1.2 实验背景
从MySQL5.5版本开始,MySQL源码安装的编译工具由configure开始向cmake过渡,安装方式和MySQL5.5之前的版本略有不同。在这里简单小结下。
源码编译安装最容易出错,也是最耗时间。sky建议初学者学会一种方式之后,尝试应用多种方式安装。
安装之前,最好检查一些基础软件,例如 make, GCC, Perl,libncurses5-dev,cmake-2.8.5, ncurses-devel是否都已经安装,如果没有安装,用yum -y install gcc gcc-c++ make cmake bison ncurses-devel安装补全,否则在编译和安装时报错。
1.3 安装Cmake
#进入源代码目录
[root@localhost src]# cd /usr/local/src
#下载安装文件
[root@localhost src]# wgethttp://wwwNaNake.org/files/v2.8/cmake-2.8.5.tar.gz
#解压缩
[root@localhost src]# tar zxvfcmake-2.8.5.tar.gz
#安装
[root@localhost src]# cd cmake-2.8.5
[root@localhost src]#./bootstrap
[root@localhost src]# gmake
[root@localhost src]# gmake install
#退回源代码目录
cd ../
1.4 cmake简介
CMake 是"cross platform make"的缩写。它是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。
和之前configure的语法对比如下
安装选项的对比如下:
1.5 安装bison-2.5
#下载安装文件
[root@localhost src]# wgethttp://ftp.gnu.org/gnu/bison/bison-2.5.tar.gz
#解压缩
[root@localhost src]# tar zxvfbison-2.5.tar.gz
#安装
[root@localhost src]# cd bison-2.5
[root@localhost src]#./configure
[root@localhost src]# make
[root@localhost src]# make install
#退回源代码目录
cd ../
1.6 Mysql安装
#创建mysql用户和组
[root@localhost src]# /usr/sbin/groupaddmysql
[root@localhost src]# /usr/sbin/useradd-g mysql mysql
[root@localhost src]# mkdir/usr/local/mysql #建立数据库目录
[root@localhost src]# mkdir/usr/local/mysql/data #建立数据库文件夹
#取源代码放到目录下/usr/local
#解压缩进入安装目录
[root@localhost src]# tar xvf mysql-5.5.27.tar.gz
[root@localhost src]# cd mysql-5.5.27
#编译
[root@localhost mysql]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\
-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_USER=mysql
#安装
[root@localhost mysql]## make&&makeinstall
1.7 安装后
1.7.1 链接文件
ln -s /usr/local/mysql/lib/libmysqlclient.so.18/usr/lib64/
#不执行这一步,运行时可能会出现如下错误
error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
1.7.2 设置PATH环境变量
Vi /etc/profile
#在profile最后加上
export PATH=”/usr/local/mysql/bin:$PATH”
#保存后
source /etc/profile
1.7.3 配置参数文件
cd support-files
cp my-large.cnf /etc/my.cnf
#编辑my.cnf,加入以下内容或是在原有路径上修改如下:
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/data/mysql_error.log
pid-file = /usr/local/mysql/data/mysql.pid
socket =/usr/local/mysql/data/mysql.socket //如果已经有,则修改目录为mysql的数据目录,此处是/usr/local/mysql/data
1.7.4 设置权限
[root@localhost mysql]# cd /usr/local/mysql
[root@localhost mysql]# chown –R mysql . #注意mysql后空格后加点,修改权限。
[root@localhost mysql]# chgrp –R mysql . #注意mysql后空格后加点,修改权限。
1.7.5 mysql 初始化安装
cd /usr/local/mysql/
[root@localhost mysql]# scripts/mysql_install_db\
--defaults-file=/etc/my.cnf \
--basedir=/usr/local/mysql \
--user=mysql \
--force
如果产生错误like:‘WARNING: The host '***' could not be looked up with resolveip’
执行时加上 –force 选项
1.7.6 修改权限
#将安装目录所有权改为root,数据目录的所有权改为你运行mysqld的用户
cd /usr/local/mysql
[root@localhost mysql]# chown -R root . #注意root后空格加点。
[root@localhost mysql]# chown -R mysqldata
1.8 配置服务
#配置服务
cd /usr/local/mysql/support-files
[root@localhost support-files]# cpmysql.server /etc/init.d/mysqld
[root@localhost support-files]# chmod+x /etc/init.d/mysqld
[root@localhost support-files]# chkconfig --add mysqld #开机自动启动
[root@localhost support-files]# chkconfig --level 345 mysqld on
1.9 启动与停止 mysql
[root@localhost ~]# service mysqldstart
Starting MySQL SUCCESS!
[root@localhost ~]# service mysqld stop
Shutting down MySQL... SUCCESS!
1.10 设置Mysql用户账号密码
mysql安装后默认生成两个帐号:一个是root,未设置密码,可以从本机登录到mysql;另一个是匿名帐号,无帐号名、无密码,可以从本机登录,未提供用户名的连接都将假定为此帐号。这样的设置存在着安全隐患,按下面的步骤进行更改。
1) 修改root的密码
执行命令:/usr/local/mysql/bin/mysqladmin–u root –p旧密码 password 新密码或者用root登录数据库
# mysql –u root
登录以后执行
Mysql>set password for ‘root’@’hostname’=password(‘新密码’);
或者执行
Mysql>update mysql.user setpassword=password(‘新密码’)
—>where user = ‘root’ and host =’hostname’;
如果不知道hostname,可先执行select host,user from mysql.user where user=’root’
2)删除匿名用户
Root 登录后执行
mysql> delete from mysql.user where user=’’ ; 删除用户名为空的记录
mysql> delete from mysql.user where password=’’ ; 删除密码为空的记录
3) 修改完用户权限以后,执行
Mysql> flush privileges;
因为MySQL启动后,所有用户权限都是加载到内存中的;但有些权限更新操作不会刷新到内存中,这样只有下次启动时才生效,如果直接update mysql.user来修改密码等;flush privileges 强制让MySQL重新加载权限,这样刚才修改的就马上生效了。
小结:IT技术更新好快,如果要做好一个运维专家,学的东西太多了,就例如我们上面的例子,仅是一个升级版本,对运维技术人员来说,又要花上几个小时研究一下。