## cmake方式编译安装MySQL
由于MySQL5.5.xx-5.6.xx产品系列特殊性,所以编译方式也和早期的产品编译方式不同,采用cmake(cmake软件需要另外安装)或gmake方式安装编译.即:
```
./cmake .
make
make install
```
### 操作流程
* 卸载已安装的MySQL
* 下载:当前mysql版本到了5.5.29
* 必要软件包
* 编译安装
* 添加用户
* 编译安装
* 编译参数
* 改变目录所有者
* 初始化数据库
* 注册为服务
* 启动MySQL服务
* 改变编码,防止乱码
* 将mysql的bin加入到path中
* 配置用户密码和远程访问权限
### 0. 卸载MySQL
```
# 查看是否有存在的MySQL运行进程
[root@localhost src]# netstat -tunpl|grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 3095/mysqld
# 关闭MySQL服务
[root@localhost src]# service mysqld stop
# 查看命令所在路径
[root@localhost src]# which mysql
/usr/bin/mysql
# 查看rpm安装目录
[root@localhost src]# rpm -qf /usr/bin/mysql
mysql-5.0.95-5.el5_9
# 无依赖删除软件包
[root@localhost src]# rpm -e mysql-5.0.95-5.el5_9 --nodeps
warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave
```
### 2. 必要软件包
```
yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake curl freetype libjpeg-turbo libjpeg-turbo-devel openjpeg-libs libpng gd ncurses
```
### 3. 编译安装
* 3.1 添加用户
```
useradd mysql -s /sbin/nologin
```
* 3.2 编译安装
```
tar -zxvf mysql-5.5.29.tar.gz && cd mysql-5.5.29 #默认情况下是安装在/usr/local/mysql
```
```
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
```
```
make && make install
```
* 3.3 改变目录所有者
```
chown -R mysql.mysql /usr/local/mysql
```
### 4、注册为服务
```
cd /usr/local/src/mysql-5.5.29/support-files
#注册服务
cp mysql.server /etc/rc.d/init.d/mysqld
#使用默认配置文件
cp my-small.cnf /etc/my.cnf
#让chkconfig管理mysql服务
chkconfig --add mysqld
# 给mysqld授权执行
chmod a+x /etc/init.d/mysqld #或者使用 setfacl -m u:root:rwx /etc/init.d/mysqld
#开机启动
chkconfig mysqld on
```
### 5、初始化数据库
```
cd /usr/local/mysql/scripts
./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
```
### 6、启动MySQL服务
```
service mysqld start
```
### 7、将mysql的bin加入到path中
```
ln -s /usr/local/mysql/bin/mysql /usr/local/sbin/mysql
cd ~
#另外,把path添加到当前用户目录的bashrc中,如果需要全局设定,请修改`/etc/profile` vi .bashrc #加入以下内容
PATH=/usr/local/mysql/bin:$PATH
source /etc/profile
```
### 8、修改MySQL数据库的root密码
```
/usr/local/mysql/bin/mysqladmin -u root password 'aaaaaa'
```
### 9、改变编码,防止乱码
```
SHOW VARIABLES LIKE 'character%'
```
#### 修改mysql的my.cnf文件增加如下内容
```
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
pid-file=/var/lib/mysql/mysqld.pid
[mysql]
default-character-set=utf8
[mysqld_safe]
log-error=/var/lib/mysql/mysql_error.err
```
### 10、配置用户密码和远程访问权限
```
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY '123456' WITH GRANT OPTION;
```
相关博文参考:
*[linux下MySQL 5.6源码安装 - 野性的呼唤的日志](http://blog.163.com/liyinhui20080527@126/blog/static/815232582013885310900/)*
*[CentOS 6.4下编译安装MySQL 5.6.14 - Xiongpq](http://www.cnblogs.com/xiongpq/p/3384681.html) *
*[linux下MySQL 5.6源码安装 - 我的Hello World](http://my.oschina.net/looly/blog/297980)*
# 安装的时候遇到的问题
```
[root@localhost.localdomain /etc/init.d]
# service mysqld restart
/etc/init.d/mysqld: line 44: /usr/bin/my_print_defaults: 没有那个文件或目录
/etc/init.d/mysqld: line 44: /usr/bin/my_print_defaults: 没有那个文件或目录
/etc/init.d/mysqld: line 44: /usr/bin/my_print_defaults: 没有那个文件或目录
/etc/init.d/mysqld: line 44: /usr/bin/my_print_defaults: 没有那个文件或目录
停止 mysqld: [确定]
/etc/init.d/mysqld: line 117: /usr/bin/mysqladmin: 没有那个文件或目录
Cannot check for MySQL Daemon startup because of mysqladmin failure.
启动 mysqld: [失败]
```
> 问题已经找到:原因是安装的时候没有卸载用yum安装的MySQL数据库(卸载操作查看0)
- 写在前面
- MySQL的使用
- MySQL多表同时删除方案
- MySQL跨表、多表更新SQL语句总结
- MySQL存储引擎
- 安装
- 常规方式编译安装MySQL
- 采用cmake方式编译安装MySQL
- 使用rpm包安装MySQL
- 使用yum方式安装MySQL
- 采用二进制方式免编译安装MySQL
- 多实例的安装
- 什么是多实例
- 多实例的作用、问题以及应用场景
- 多实例安装01【推荐】
- 多实例官方安装方案02
- 启动、用户和权限管理
- 单实例MySQL的启动和关闭的方法
- 设置及修改MySQL root用户密码
- 找回丢失的MySQL root用户密码
- 创建MySQL用户及用户权限管理
- 基础命令的操作
- MySQL库和表相关操作
- MySQL中的索引操作
- MySQL常用命令
- MySQL的错误代码
- MySQL复习秘籍
- 备份与恢复
- 备份
- 恢复
- mysqlbinlog命令
- 服务日志
- 主从复制
- 主从复制部署配置问题汇总
- 主从复制读写分离
- 灾难恢复
- 配置phpmyadmin连接多实例MySQL
- 其他相关
- Sphinx实验
- 中文分词技术
- MySQL语句大全
- 用户创建、权限、删除
- 数据库与表显示、创建、删除
- 表复制及备份还原
- 数据库表中数据操作
- 修改表的列与表名
- 修改表中的数据
- 查询表
- 日志
- 批量修改Mysql表引擎为InnoDB的方法
- 数据库抽象层 PDO
- PDO对象常用方法
- PDO 事务处理
- PDO 与 MySQLi 二者效率简单比较
- 大小写敏感性 lower_case_table_names
- CentOS7安装MySQL5.7密码查看与修改