CentOS6.5下編譯安裝mysql-5.6.27
阿新 • • 發佈:2019-01-08
MySQL的安裝分為三種:
1、RPM包安裝;(MySQL-5.6.27-1.linux_glibc2.5.i386.rpm-bundle.tar)
2、二進位制包安裝;(mysql-5.6.27-linux-glibc2.5-i686.tar.gz)
3、原始碼安裝。 (mysql-5.6.27.tar.gz)
原始碼編譯安裝,可以更靈活的調整引數,並且能夠在同一個伺服器上部署多個不同版本的MySQL資料庫系統。對於生產環境,就需要根據實際情況作選擇,對於需要大批量部署資料庫伺服器的環境,可以在一臺機器上原始碼編譯後,打包成RPM格式,而後其他伺服器直接使用這個定製化編譯過的版本進行快速安裝。
MySQL資料庫的原始碼安裝包從5.5版本開始,原始碼編譯配置工具換成了CMake。在編譯工程中還需要make和gcc兩個程式用於原始碼編譯。後兩者一般系統都會自帶,唯有CMake,如果當前系統配置了yum,那麼直接執行yum install cmake即可。如果當前系統既無yum也沒有cmake命令,那麼就需要先編譯安裝CMake。
##安裝CMake
[ [email protected] tmp]# ll cmake-2.8.8.tar.gz
-rw-r--r--. 1 root root 5691656 12月 11 17:55 cmake-2.8.8.tar.gz
[[email protected] tmp]# tar zxf cmake-2.8.8.tar.gz
[[email protected] tmp]# cd cmake-2.8.8
[[email protected] cmake-2.8.8]# ./configure
---------------------------------------------
CMake 2.8.8, Copyright 2000-2011 Kitware, Inc.
---------------------------------------------
Error when bootstrapping CMake:
Cannot find appropriate C compiler on this system. ##缺少gcc包
Please specify one using environment variable CC.
See cmake_bootstrap.log for compilers attempted.
---------------------------------------------
Log of errors: /tmp/cmake-2.8.8/Bootstrap.cmk/cmake_bootstrap.log
---------------------------------------------
[ [email protected] tmp]# rpm -qa | grep make ##檢查發現make有了
make-3.81-20.el6.i686
[[email protected] tmp]# rpm -qa | grep gcc ##檢查發現gcc缺少
libgcc-4.4.7-4.el6.i686
[[email protected] tmp]# yum install gcc ##安裝
[[email protected] tmp]# yum install gcc-c++
[[email protected] tmp]# rpm -qa | grep gcc
gcc-c++-4.1.2-46.el5.i386
gcc-4.1.2-46.el5.i386
libgcc-4.4.7-4.el6.i686
[[email protected] cmake-2.8.8]# ./configure
[[email protected] cmake-2.8.8]# gmake && make install
[[email protected] cmake-2.8.8]# cmake ##安裝完成後就多了個cmake命令
cmake version 2.8.8
Usage
cmake [options] <path-to-source>
cmake [options] <path-to-existing-build>
......
##新增使用者和組
[[email protected] ~]# groupadd mysql
[[email protected] ~]# useradd -r -g mysql mysql
##設定使用者作業系統資源的限制
[[email protected] ~]# vi /etc/security/limits.conf
mysql soft nproc 2047
mysql hard nproc 16384
mysql soft nofile 1024
mysql hard nofile 65536
##編譯mysql
[[email protected] tmp]# ll mysql-5.6.27.tar.gz
-rw-r--r-- 1 root root 33327156 Dec 11 06:43 mysql-5.6.27.tar.gz
[[email protected] tmp]# tar zxf mysql-5.6.27.tar.gz
[[email protected] tmp]# cd mysql-5.6.27
[[email protected] tmp]# ##執行cmake命令開始編譯
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ ##軟體的安裝路徑
-DDEFAULT_CHARSET=utf8 \ ##MySQL服務的預設字符集
-DDEFAULT_COLLATION=utf8_general_ci \ ##MySQL服務的預設校隊規則
-DEXTRA_CHARSETS=all \ ##指定附加的字符集
-DENABLED_LOCAL_INFILE=1 \ ##是否允許客戶端本地載入資料到MySQL服務端
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ ##編譯INNODB儲存引擎
-DWITH_MYISAM_STORAGE_ENGINE=1 \ ##編譯MYISAM儲存引擎(MyISAM、MEMORY、MERGE、CSV這四種引擎預設就會編譯)
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ ##編譯BLACKHOLE儲存引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ ##編譯ARCHIVE儲存引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1 \ ##編譯FEDERATED儲存引擎
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ ##不編譯EXAMPLE儲存引擎
-DWITH_PARTITION_STORAGE_ENGINE=1 \ ##支援分割槽
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ ##編譯PERFORMANCE_SCHEMA
-DCOMPILATION_COMMENT='ZSH for mysqltest' \ ##指定編譯資訊
-DWITH_READLINE=1 \ ##指定輸入輸出的處理方式(與能否輸入中文有關)
-DMYSQL_TCP_PORT=3306 \ ##指定預設埠
-DMYSQL_USER=mysql \ ##指定使用者為mysql
-DMYSQL_DATADIR=/data/3306 \ ##指定MySQL資料庫資料檔案的儲存路徑(等效於:datadir=/data/3306)
-DSYSCONFDIR=/data/3306 \ ##指定MySQL引數檔案my.cnf的預設路徑(等效於:--defaults-file=/data/3306/my.cnf)
-DMYSQL_UNIX_ADDR=/data/3306/mysql.sock ##指定套接字檔案的儲存路徑(等效於:socket=/data/3306/mysql.sock)
##cmake命令執行成功的話,最後輸出資訊類似:
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/mysql-5.6.27
##如果編譯過程中出現錯誤,或者引數變更要重新配置,可以通過rm命令,刪除原始碼包目錄下的CMakeCache.txt檔案,而後重新執行cmake命令,或者乾脆將mysql原始碼目錄刪除,再重新解壓並進行編譯。
[[email protected] mysql-5.6.27]# make && make install ##如果前面一步操作沒有碰到錯誤的話,原始碼編譯方式安裝mysql就成功了。
[[email protected] mysql-5.6.27]# chown -R mysql:mysql /usr/local/mysql ##將/usr/local/mysql目錄打包壓縮,得到的檔案就相當於是一套二進位制版本的MySQL了。
[[email protected] mysql-5.6.27]# vi /etc/profile
export PATH=/usr/local/mysql/bin:$PATH
##建立資料目錄
[[email protected] ~]# mkdir -p /data/3306
[[email protected] ~]# chown -R mysql:mysql /data
##初始化Mysql
[[email protected] mysql]# cd /usr/local/mysql
[[email protected] mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306
##修改Mysql主配置檔案
[[email protected] mysql]# cd /usr/local/mysql
[[email protected] mysql]# cp support-files/my-default.cnf /data/3306/my.cnf
[[email protected] 3306]# cd /data/3306/
[[email protected] 3306]# vi my.cnf
[client]
port = 3306
socket = /data/3306/mysql.sock
default-character-set = utf8
[mysqld]
port = 3306
user = mysql
socket = /data/3306/mysql.sock
pid-file = /data/3306/mysql.pid
basedir = /usr/local/mysql
datadir = /data/3306
log-bin = /data/3306/mysql-bin
lower_case_table_names=1
max_connections=1000
character_set_server=utf8
character_set_client=utf8
[mysql]
default-character-set=utf8
##為mysql提供服務指令碼
[[email protected] 3306]# cd /usr/local/mysql
[[email protected] mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
##啟動Mysql
[[email protected] mysql]# service mysqld start
Starting MySQL.............................................[ OK ]
[[email protected] mysql]# service mysqld status
MySQL running (28579) [ OK ]
[[email protected] mysql]# netstat -tulnp | grep mysql
tcp 0 0 :::3306 :::* LISTEN 28579/mysqld
##登入Mysql測試一下
[[email protected] 3306]# mysql -uroot -p ##第一次登陸密碼為空
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.27-log ZSH for mysqltest ##看見編譯資訊中的“ZSH for mysqltest”了嗎?
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> use test
Database changed
mysql> create table t1 (id int ,name varchar(10));
Query OK, 0 rows affected (4.90 sec)
mysql> insert into t1 values(1,'a'),(2,'b'),(3,'c');
Query OK, 3 rows affected (1.29 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from t1;
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | b |
| 3 | c |
+------+------+
3 rows in set (0.00 sec)
##修改密碼,刪除空使用者(密碼為空)
mysql> select user,host,password from mysql.user;
+------+-----------+----------+
| user | host | password |
+------+-----------+----------+
| root | localhost | |
| root | db | |
| root | 127.0.0.1 | |
| root | ::1 | |
| | localhost | |
| | db | |
+------+-----------+----------+
6 rows in set (0.00 sec)
mysql> update mysql.user set password = PASSWORD('123') where user = 'root';
Query OK, 4 rows affected (0.01 sec)
Rows matched: 4 Changed: 4 Warnings: 0
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| root | db | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| root | 127.0.0.1 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| root | ::1 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| | localhost | |
| | db | |
+------+-----------+-------------------------------------------+
6 rows in set (0.00 sec)
mysql> drop user ''@localhost;
Query OK, 0 rows affected (0.00 sec)
mysql> drop user ''@db;
Query OK, 0 rows affected (0.01 sec)
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| root | db | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| root | 127.0.0.1 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| root | ::1 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+------+-----------+-------------------------------------------+
4 rows in set (0.01 sec)
mysql> update mysql.user set host='%' where user='root' and host='localhost';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | % | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| root | db | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| root | 127.0.0.1 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| root | ::1 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)