在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