centos6.7編譯安裝mysql5.7.17


提示:mysql5.7.17和之前5.56以前的版本安裝不一樣,需要用cmake

另外,看本文檔的mysql編譯前我說一點,第一次一定要大概的看完整個過程,不能一直跟着文檔做,否則后面容易遇到問題。比如編譯完會特別占用磁盤空間,萬一之前分配的空間不夠,那樣就會丟失很多重要文件導致失敗。

 

安裝前工作:

1,從官方網址下載MySQL5.7.17源碼包

http://dev.MySQL.com/downloads/mysql/#downloads     

# 下載通用包也可以,本例用的是通用包和boost包

 

2,安裝好CentOS6.7 64位操作系統。

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 

# 這是個人在安裝老版本使用的,相關依賴包

所需的兩個包:

boost_1_59_0.tar.gz

mysql-5.7.17.tar.gz

 

1、查看是否安裝過mysql

 [root@Allen ~]# rpm -qa | grep mysql

如果安裝了,那就停止MySQL服務並且將其卸載

[root@Allen ~]#service  mysqld   stop

如果是rpm包安裝的就用rpm  -e  卸載,如果yum安裝就用yum   -y  remove卸載。並且刪除安裝目錄等

 

正式安裝MySQL

2、添加MySQL用戶和所屬組(要先查看是否已經存在mysql用戶和組)

[root@Allen ~]#cat  /etc/passwd  | grep  mysql          # 查看是否已存在mysql用戶

[root@Allen ~]#cat   /etc/group  | grep  mysql          # 查看是否已存在mysql組

[root@Allen ~]# groupadd mysql                          # 如果先執行下面的命令會提示沒有mysql這個組

[root@Allen ~]# useradd -r -g mysql mysql  

 

3、創建mysql安裝目錄和數據目錄

[root@Allen home]# mkdir mysql              # 創建目錄作為MySQL5.7.17安裝路徑

[root@Allen home]# mkdir data               # 創建目錄作為MySQL5.7.17數據路徑

 

4、修改MySQL目錄所有者

[root@Allen support-files]# chown -R mysql:mysql  /home/mysql

 

5、解壓源碼包

我已經提前把兩個包放到/home目錄下(可以用winscp,也可以用Linux的rz命令,但是需要安裝rz的相關包)

[root@Allen ~]# cd /home/

[root@Allen home]# ls                              # 把這兩個包放到/home目錄並且解壓

boost_1_59_0  boost_1_59_0.tar.gz  mysql-5.7.17  mysql-5.7.17.tar.gz

[root@Allen home]#tar -zxvf mysql-5.7.11.tar.gz

[root@Allen home]#tar –zxvf boost_1_59_0.tar.gz

[root@Allen home]# cd mysql-5.7.17/                # 進入解壓完成后的mysql目錄

[root@Allen mysql-5.7.17]# ls

BUILD            Docs                 libmysqld    README         unittest

client           Doxyfile-perfschema  libservices  regex          VERSION

cmake            extra                man          scripts        vio

CMakeLists.txt   include              mysql-test   sql            win

cmd-line-utils   INSTALL              mysys        sql-common     zlib

config.h.cmake   libbinlogevents      mysys_ssl    storage

configure.cmake  libbinlogstandalone  packaging    strings

COPYING          libevent             plugin       support-files

dbug             libmysql             rapid        testclients

 

編譯安裝:

[root@Allen mysql-5.7.17]# cmake \

> -DCMAKE_INSTALL_PREFIX=/home/mysql \             指定安裝路徑,如果沒有mysql這個目錄就要提前新建

> -DMYSQL_DATADIR=/home/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 \                            下載boost這個包,之前我們下載過了,這里就可以不使用這個參數了,因為mysql5.7.17需要這個包來編譯,如果網絡差,下載這個是很慢的,還不如提前下載好放到Linux解壓

> -DWITH_BOOST=/home/boost_1_59_0                 指定Boost擴展源碼路徑,這個地方的路徑是boost包解壓后得到的路徑。

 

1、這里進行make安裝:

[root@Allen mysql-5.7.17]# make            # 可以make  && make  install 

過程太多了,這里就復制出來最后完成后的部分命令

[100%] Building CXX object libmysqld/examples/CMakeFiles/mysql_embedded.dir/__/__/client/readline.cc.o

Linking CXX executable mysql_embedded

[100%] Built target mysql_embedded

Scanning dependencies of target mysqltest_embedded

[100%] Building CXX object libmysqld/examples/CMakeFiles/mysqltest_embedded.dir/__/__/client/mysqltest.cc.o

Linking CXX executable mysqltest_embedded

[100%] Built target mysqltest_embedded

Scanning dependencies of target my_safe_process

[100%] Building CXX object mysql-test/lib/My/SafeProcess/CMakeFiles/my_safe_process.dir/safe_process.cc.o

Linking CXX executable my_safe_process

[100%] Built target my_safe_process

 查看編譯是否有問題

 [root@Allen mysql-5.7.17]# echo $?          # 提示0  說明編譯成功沒問題
0

 

2、make install 安裝:

[root@Allen mysql-5.7.17]# make install

……………………                                      # 上面部分省略

-- Installing: /home/mysql/support-files/my-default.cnf

-- Installing: /home/mysql/support-files/mysqld_multi.server

-- Installing: /home/mysql/support-files/mysql-log-rotate

-- Installing: /home/mysql/support-files/magic

-- Installing: /home/mysql/share/aclocal/mysql.m4

-- Installing: /home/mysql/support-files/mysql.server

再次確認,返回 0  說明安裝成功沒有問題

[root@Allen mysql-5.7.17]# echo $?

0

 

3、初始化MySQL

切換到安裝目錄:

[root@Allen mysql-5.7.17]# cd /home/mysql/bin

初始化數據庫:

[root@Allen bin]# ./mysqld --initialize --user=mysql --datadir=/home/data/ --basedir=/home/mysql --socket=/tmp/mysql.sock

2017-03-14T23:42:15.896642Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

2017-03-14T23:42:17.753496Z 0 [Warning] InnoDB: New log files created, LSN=45790

2017-03-14T23:42:18.037850Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.

2017-03-14T23:42:18.122664Z 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: dc2d9f27-090f-11e7-8a26-000c29e5ba07.

2017-03-14T23:42:18.124749Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.

2017-03-14T23:42:18.127431Z 1 [Note] A temporary password is generated for root@localhost: iv5EnvXxDt,U

# 在MySQL 5.7.6版本以前是 bin/mysql_install_db  --user

注意:MySQL5.7.17版本初始化以后會給root用戶一個初始密碼

在最后 也就是這里的  root@localhost: iv5EnvXxDt,U

還有一個注意下:我個人遇到,初始化的密碼,他隨機生成,英文字母O和數字0在Linux挺像的。大小寫有時候也會分不清楚。如果可以我們把初始密碼復制寫到Linux一個.txt文本,然后復制一份到windows下的word上對比一下,然后輸入密碼登錄數據庫

  

4、添加MySQL服務,拷貝mysql配置文件

[root@Allen bin]# cd /home/mysql                 #切換到安裝目錄

[root@Allen mysql]# ls

bin  COPYING  docs  include  lib  man  mysql-test  README  share  support-files

 

[root@Allen mysql]# cd support-files/

[root@Allen support-files]# ls

magic  my-default.cnf  mysqld_multi.server  mysql-log-rotate  mysql.server

[root@Allen support-files]# cp  -a  mysql.server /etc/init.d/mysql                 

# -a 可以把原來的屬性一起復制過來

 

5、編輯my.cnf文件

# 添加下面的,這里為了簡潔,省去其他的,都是按照默認的

[root@Allen support-files]# vim /etc/my.cnf

[mysqld]

port=3306

basedir=/home/mysql

datadir=/home/data

socket=/tmp/mysql.sock

user=mysql

  

6、重啟MySQL、並設置開機自啟

[root@Allen support-files]# service mysql  start

Starting MySQL. SUCCESS!

[root@Allen support-files]#chkconfig   mysql  on  #設置開機自啟,要養成一個好習慣

注意:親測mysql5.7.17 設置服務啟動是mysql    而不是mysqld,上面沒有打錯。可能是因為版本的原因。本人一開始就是編譯mysql5.7.17的。

[root@Allen support-files]# ps -ef               #查看是啟動

 這里本人喜歡用service mysql start ,但是之前我本人看到別人用/etc/init.d/mysql start  這個也是可以的。(其實本人對這個研究也不是很透)

 

7、    登錄MySQL

[root@Allen ~]#cd /home/mysql/bin

[root@Allen bin]# ./mysql -uroot –p               #小技巧:數據庫初始密碼是隨機生成的,比較復雜。如果是在xshell里面搭建,那就可以復制初始密碼,然后保存到一個文件里面。復制了以后,登錄數據庫,可以查看密碼文件然后輸入密碼。或者因為之前復制了密碼,這里可以用按下鼠標中間的滾輪,粘貼密碼。然后登錄數據庫。避免初始密碼輸入出錯

Enter password:                                   #我前面說了MySQL5.7.17版本初始化以后會給root用戶一個初始密碼

在最后 也就是這里的  root@localhost: iv5EnvXxDt,U

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 3

Server version: 5.7.17

 

Copyright (c) 2000, 2016, 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>

  

 

8、修改root密碼(登錄后一定要更改密碼,初始密碼使用一次就會過期。第二次就無法使用)

mysql> SET PASSWORD = PASSWORD('qwe12345');   # 其實這個小寫也是可以的,下面有一個例子。

Query OK, 0 rows affected, 1 warning (0.00 sec)Query OK, 0 rows affected, 1 warning (0.00 sec)           # 養成一個好習慣,他這里提示有1  warning   也就是說有一條警告提示。我們下面就去看一下

mysql> set password=password('12345');        # 其實小寫也是可以的

 

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)

 

注意mysql 新設置用戶或更改密碼后需用flush privileges刷新MySQL的系統權限相關表,否則會出現拒絕訪問,還有一種方法,就是重新啟動mysql服務器,來使新設置生效

mysql> flush privileges;

mysql> quit;

至此,編譯安裝完成

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM