1. 程式人生 > >在CentOS7中手工編譯安裝Mysql5.7

在CentOS7中手工編譯安裝Mysql5.7

可能 文件 lac val mysql5.7 welcome hole 開啟 names

在CentOS7中手工編譯安裝Mysql5.7

實驗介紹:由於Mysql自從5.5之後,都需要安裝boost的函數庫,所以和LAMP中編譯安裝Mysql略有不同,配置文件也不一樣,下面來介紹。

1、首先查看CentOS7之前是否安裝過Mysql,先要進行刪除,使用的命令是。

rpm -q mysql

2、首先使用yum倉庫安裝所需要的開發包和軟件包。

yum -y install ncurses \                           #提供字符終端處理庫
ncurses-devel \                     #ncurses開發包
bison \                             #語法分析器生成器
cmake                               #跨平臺的安裝(編譯)工具

3、將Mysql5.7的源碼包和boost源碼包分別解壓到指定位置,這裏的位置要和下面配置中的路徑對應。

tar zxvf mysql-5.7.17.tar.gz -C /opt/
tar zxvf boost_1_59_0.tar.gz -C /usr/local/

4、切換到boost文件的解壓目錄下,改下解壓包名稱,方便下面使用。

cd /usr/local/
mv boost_1_59_0  boost

5、準備工作結束後,切換至Mysql-5.7.17的解壓路徑下,執行配置文件。

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \                  #指定安裝路徑
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \            #指定sock文件的路徑
-DSYSCONFDIR=/etc \                                        #Mysql配置文件路徑
-DSYSTEMD_PID_DIR=/usr/local/mysql \                       #PID文件路徑
-DDEFAULT_CHARSET=utf8  \                                  #默認字符集
-DDEFAULT_COLLATION=utf8_general_ci \                      #指定默認的排序字符集
-DWITH_INNOBASE_STORAGE_ENGINE=1 \                         #下列幾個是需要安裝的引擎模塊
-DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysql/data \                    #指定數據文件路徑
-DWITH_BOOST=/usr/local/boost \                            #boost函數庫位置
-DWITH_SYSTEMD=1                                           #支持使用系統管理

6、添加運行Mysql的進程用戶,並設置無法用shell登錄。

useradd -s /sbin/nologin  mysql

7、配置文件安裝完後,進行數據文件的編譯和安裝。這裏註意磁盤空間和內存,若使用虛擬機安裝的話,內存一定要調到2G以上,否則會在46%左右,編譯無法通過,Mysql所在的目錄容量大小最好大於5G。這裏需要時間比較漫長,大概需要50分鐘左右,視電腦情況而定。

make && make install

8、編譯和安裝完後,修改/usr/local/mysql即安裝路徑和/etc/my.cnf即主配置文件的屬主和屬組。

chown -R mysql.mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

9、下面修改Mysql的主配置文件/etc/my.cnf,主要修改下列幾項。

[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

10、修改系統的環境變量,使其能夠識別mysql命令,修改完後,刷新,使環境變量生效。

echo ‘PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH‘ >> /etc/profile
echo ‘export PATH‘ >> /etc/profile
source /etc/profile

11、重新切換到/usr/local/mysql路徑下面,初始化數據庫。

cd /usr/local/mysql/

bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

這裏可能會出現下面的報錯。需要我們刪除/usr/local/mysql/data目錄,再重新初始化,就能成功。

2018-06-26T01:46:23.274443Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2018-06-26T01:46:23.274552Z 0 [ERROR] Aborting

12、下面的設置主要為了能夠讓mysql支持系統管理。

cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ #使其支持systemctl管理
systemctl daemon-reload #重新加載系統服務管理模塊

13、開啟mysql服務,並查看3306端口是否開啟。

systemctl start mysqld
netstat -anpt | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1290/mysqld     

14、設置數據庫的root管理密碼。

mysqladmin -u root -p password "abc123"    #給root賬號設置密碼為abc123提示輸入的是原始密碼(空),直接回車。

15、這裏若出現下面的報錯,需要我們重啟mysql服務。

[root@localhost mysql]# mysqladmin -u root -p password "abc123"
Enter password: 
mysqladmin: connect to server at ‘localhost‘ failed
error: ‘Can‘t connect to local MySQL server through socket ‘/usr/local/mysql/mysql.sock‘ (2)‘
Check that mysqld is running and that the socket: ‘/usr/local/mysql/mysql.sock‘ exists!

15、使用root用戶登錄mysql。

mysql -u root -p        #提示輸入的就是之前我們設置的abc123

16、最後我們就進入了數據庫界面。

[root@localhost mysql]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.17-log Source distribution

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> 

17、出現這個界面,說明我們安裝成功

在CentOS7中手工編譯安裝Mysql5.7