## 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密碼查看與修改