CentOS6.5編譯安裝MySQL 5.7.11

http://mirrors.sohu.com/mysql


安裝前工作:
1,從官方網址下載MySQL5.7.11源碼包,大概49M
2,安裝好CentOS6.5 64位操作系統。建議update操作系統,以便是此版本最新的
3. yum -y install  gcc gcc-c++ autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake  libaio libaio-devel autoconf bzr bison libtool   make cmake  gcc-c++ bison ncurses-devel  //這是個人在安裝老版本使用的,相關依賴包

軟件放在/data

正式安裝MySQL
1. 添加MySQL用戶和所屬組
    groupadd mysql
    useradd -r -g mysql mysql


2. 解壓源碼包 

   mkdir /data

chmod 755 /data

   cd /data

    wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.11.tar.gz
    tar -zxvf mysql-5.7.11.tar.gz


3. 開始踩MySQL的坑
    設置好make編譯的目錄   

cd mysql-5.7.11

cmake \
-DCMAKE_INSTALL_PREFIX=/data/mysql \              // 安裝根目錄
-DMYSQL_DATADIR=/mysql/data \                        //數據庫存儲路徑

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \           //這個最好換成 /data 下
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/data/boost_1_59_0           //需要boost支持,這一點跟5.6版本的不一樣

 

-- Configuring done
-- Generating done
-- Build files have been written to: /root/mysql-5.7.11
到這裏cmake完成,比較順利              

cmake -DCMAKE_INSTALL_PREFIX=/data/mysql -DMYSQL_DATADIR=/mysql/data -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/data/boost_1_59_0

 

 


5. make 操作
# make    //漫長的過程 主要看機器的配置

 

Linking CXX executable my_safe_process
[100%] Built target my_safe_process

 

 

注意:
mysql 5.6.19 版本編譯後的文件包約2G   // 筆者一直使用的是5.6.19及以上版本
MySQL5.7.11 編譯安裝對磁盤的需求也比以往的版本多很多,make之後的 mysql-5.7.11 文件夾約4.8G
開始編譯前

# df -h

Filesystem                    Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root   27G  4.5G   21G  19% /

tmpfs                         996M  228K  996M   1% /dev/shm

/dev/sda1                     485M   39M  421M   9% /boot

 

編譯完成後:

# df -h

Filesystem                    Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root   27G  9.5G   16G  38% /

tmpfs                         996M  228K  996M   1% /dev/shm

/dev/sda1                     485M   39M  421M   9% /boot

 

 

 

此時如果執行make install 會因爲磁盤不足,導致缺失重要的文件,筆者,嘗試過幾次,均失敗。 最後的報錯如下:
-- Installing: /usr/local/mysql/bin/mysql_embedded
CMake Error at libmysqld/examples/cmake_installNaNake:42 (FILE):
  file INSTALL cannot copy file
  "/root/mysql-5.7.11/libmysqld/examples/mysql_embedded" to
  "/usr/local/mysql/bin/mysql_embedded".
Call Stack (most recent call first):
  cmake_installNaNake:116 (INCLUDE)
make: *** [install] Error 1


並且5.7.11的安裝文件也比以往略大
5.6.19  ---->1.1G
5.7.11  ---->1.9G 
所以建議大家儘量給多一點空間

 

 

6. make install 安裝:
# make install      從最後一行看到密碼?
........

-- Installing: /usr/local/mysql/support-files/magic
-- Installing: /usr/local/mysql/share/aclocal/mysql.m4
-- Installing: /usr/local/mysql/support-files/mysql.server

 

 

7. 初始化MySQL

cd /data/mysql/bin

./mysqld --initialize   --user=mysql --datadir=/data/mysql/data --basedir=/data/mysql --socket=/tmp/mysql.sock     //在MySQL 5.7.6版本以前是 bin/mysql_install_db  --user
2016-02-25T04:36:27.941245Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-02-25T04:36:29.363359Z 0 [Warning] InnoDB: New log files created, LSN=45790
2016-02-25T04:36:29.529261Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2016-02-25T04:36:29.615486Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 56a9ad19-db79-11e5-bc10-080027207e2e.
2016-02-25T04:36:29.635578Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2016-02-25T04:36:29.645190Z 1 [Note] A temporary password is generated for root@localhost: oej<ibtee2r?

 

 

8. 添加MySQL服務

cd /data/mysql-5.7.11/support-files

 

# cp mysql.server /etc/init.d/mysqld
cd /etc/init.d/

chmod +x mysqld

 

chmod  a+wrx /tmp         //給socket 存儲文件 寫的權限

 

 

9. 編輯my.cnf文件
# vi /etc/my.cnf              //添加下面的,這裏爲了簡潔,省去其他的,都是按照默認的    註釋掉以前的
[mysqld]
port=3306
basedir=/data/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock

 

 

[mysqld]

port=3306

basedir=/data/mysql

datadir=/data/mysql/data

socket=/tmp/mysql.sock

init_connect='set autocommit=0'

#datadir=/var/lib/mysql

#socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

#symbolic-links=0

# Settings user and group are ignored when systemd is used.

# If you need to run mysqld under a different user or group,

# customize your systemd unit file for mariadb according to the

# instructions in http://fedoraproject.org/wiki/Systemd

 

[mysqld_safe]

log-error=/var/log/mariadb/mariadb.log

pid-file=/var/run/mariadb/mariadb.pid

 

#

# include all files from the config directory

#

 

 

10. 重啓MySQL

chown mysql.mysql /data/mysql/

 

# /etc/init.d/mysqld restart
Starting MySQL.. SUCCESS! 

 

chkconfig mysqld on

 

如果有報錯可以刪除/data/mysql/data下的

ib_logfile1  ib_logfile0

 

rm  ib_logfile0     

Y

 

再次啓動

 

ps -ef|grep mysqld 

 

 

11. 登錄MySQL


# cd /data/mysql/bin

# ./mysql -uroot -p               //第一次登錄MySQL,密碼文件在,也可以從make install 最後的一行看到密碼
Enter password: 

 

這邊忘記mysql的密碼了  方法:

vi /etc/my.cnf    #編輯文件,找到[mysqld],在下面添加一行skip-grant-tables

[mysqld]

skip-grant-tables

:wq!  #保存退出

service mysqld restart  #重啓MySQL服務

cd /data/mysql/bin

./mysql  -u root -p  #直接按回車,這時不需要輸入root密碼。

 

use mysql

update user set authentication_string=PASSWORD('123456') where User='root';

flush privileges;  #刷新系統授權表

grant all on *.* to 'root'@'localhost' identified by '123456' with grant option;

 

vi /etc/my.cnf   編輯文件,找到[mysqld],刪除skip-grant-tables這一行

:wq!  #保存退出

 

service mysqld restart    #重啓mysql,這個時候mysql的root密碼已經修改爲123456

 

mysql -uroot -p  #進入mysql控制檯

123456 #輸入密碼

 

 

 

mysql> show  warnings;
+---------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Level   | Code | Message                                            //下面提示我那種方法以後將會被遺棄                                |
+---------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Warning | 1287 | 'SET PASSWORD = PASSWORD('')' is deprecated and will be removed in a future release. Please use SET PASSWORD = '' instead |
+---------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

結束!

 

 

 

 

 

 

 

 

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章