1. 程式人生 > >CentOS 7下原始碼安裝MySQL 5.7

CentOS 7下原始碼安裝MySQL 5.7

網上說linux安裝mysql服務分兩種安裝方法:

①原始碼安裝,優點是安裝包比較小,只有幾十M左右,缺點是安裝依賴的庫多,安裝編譯時間長,安裝步驟複雜容易出錯;

②使用官方編譯好的二進位制檔案安裝,優點是安裝速度快,安裝步驟簡單,缺點是安裝包很大,300M左右(5.7版本的是600M左右),

對於第二種方法,我搞了一天,無果,到某個環節實在是無法走通,老大那邊也不讓搞了,隔了幾天老大又吩咐我在生產伺服器上安裝mysql,這次我就按照第一種方法原始碼安裝方式

下載原始碼安裝包

http://dev.mysql.com/downloads/mysql/ 選擇for  linux 下載原始碼安裝包(不大於100M的那些)

安裝mysql

準備安裝環境

首先檢查是否已經安裝過mysql:

[[email protected] src]# rpm -qa | grep mysql

有的話就解除安裝掉以前安裝的mysql:

[[email protected] src]# rpm -e --nodeps xxx(xxx是搜尋結果)

並刪除所有的相關檔案:

/etc/my.cnf

編譯和安裝

安裝編譯程式碼所需要的包

[[email protected] src]# yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio
[[email protected] src]# yum install libaio libaio-devel -y
[

[email protected] src]# yum install perl-Data-Dumper -y
[[email protected] src]# yum install net-tools -y

解壓安裝包並編譯安裝

[[email protected] src]# tar xvf mysql-5.7.4-m14.tar.gz
[[email protected] src]# cd mysql-5.7.4
[[email protected] mysql-5.7.4]#cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

常用引數講解:

CMAKE_INSTALL_PREFIX:指定MySQL程式的安裝目錄,預設/usr/local/mysql
DEFAULT_CHARSET:指定伺服器預設字符集,預設latin1
DEFAULT_COLLATION:指定伺服器預設的校對規則,預設latin1_general_ci
ENABLED_LOCAL_INFILE:指定是否允許本地執行LOAD DATA INFILE,預設OFF
WITH_COMMENT:指定編譯備註資訊
WITH_xxx_STORAGE_ENGINE:指定靜態編譯到mysql的儲存引擎,MyISAM,MERGE,MEMBER以及CSV四種引擎預設即被編譯至伺服器,不需要特別指定。
WITHOUT_xxx_STORAGE_ENGINE:指定不編譯的儲存引擎
SYSCONFDIR:初始化引數檔案目錄
MYSQL_DATADIR:資料檔案目錄
MYSQL_TCP_PORT:服務埠號,預設3306
MYSQL_UNIX_ADDR:socket檔案路徑,預設/tmp/mysql.sock

 注意事項

從MySQL 5.7.5開始Boost庫是必需的,下載Boost庫,在解壓後複製到/usr/local/boost目錄下,然後重新cmake並在後面的選項中加上選項 -DWITH_BOOST=/usr/local/boost 
(下載:http://sourceforge.net/projects/boost/files/boost/)安裝時要檢視安裝包版本

需求boost1.57.0

wget -c http://liquidtelecom.dl.sourceforge.net/project/boost/boost/1.57.0/boost_1_57_0.tar.gz

編譯執行

[[email protected] src]# make && make install(需等待一段時間)

至此,mysql安裝完成

檢查系統是否已經有mysql使用者,如果沒有則建立

[[email protected] mysql-5.7.4]# cat /etc/passwd | grep mysql
[[email protected] mysql-5.7.4]# cat /etc/group | grep mysql

建立使用者(但是不能使用mysql賬號登陸系統)

[[email protected] mysql-5.7.4]# groupadd mysql -s /sbin/nologin
[[email protected] mysql-5.7.4]# useradd -g mysql mysql

修改許可權

[[email protected] mysql-5.7.4]# chown -R mysql:mysql /usr/local/mysql

至此,mysql安裝完畢

配置

進入安裝路徑

[[email protected] mysql-5.7.4]# cd /usr/local/mysql

進入安裝路徑,執行初始化配置指令碼,建立系統自帶的資料庫和表.以root初始化操作時要加–user=mysql引數,生成一個隨機密碼(注意儲存登入時用)

[[email protected] mysql]# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

注:在啟動MySQL服務時,會按照一定次序搜尋my.cnf,先在/etc目錄下找,找不到則會搜尋"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,這是新版MySQL的配置檔案的預設位置!

注意:在CentOS 7版作業系統的最小安裝完成後,在/etc目錄下會存在一個my.cnf(自帶),需要將此檔案更名為其他的名字,如:/etc/my.cnf.bak(改掉它),否則,該檔案會干擾原始碼安裝的MySQL的正確配置,造成無法啟動。

在使用"yum update"更新系統後,需要檢查下/etc目錄下是否會多出一個my.cnf,如果多出,將它重新命名成別的。否則,MySQL將使用這個配置檔案啟動,可能造成無法正常啟動等問題。

新增防火牆(可以省去)

[[email protected] mysql]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[[email protected] mysql]# firewall-cmd --reload
 

啟動mysql

新增服務,拷貝服務指令碼到init.d目錄,並設定開機啟動

[[email protected] mysql]# cp support-files/mysql.server /etc/init.d/mysql
[[email protected] mysql]# chkconfig mysql on
[[email protected] mysql]# service mysql start --啟動MySQL

檢視mysql是否啟動成功

[[email protected] mysql]# netstat -lntp | grep 3306

如果mysql沒有啟動成功,到目錄/usr/local/mysql/data下檢視錯誤日誌

[[email protected] data]# tail localhost.localdomain.err (localhost.localdomain是主機名)

如果沒有生成日誌目錄,則mysql安裝沒有成功(再重新編譯安裝一次)

重啟mysql

首先殺死mysql程序

[[email protected] 3306]# pkill mysqld

然後檢查是否已經殺死mysql程序

[[email protected] 3306]# netstat -lntp | grep 3306

此時shell沒有任何輸出,表明已經殺死了mysql程序

然後重啟mysql並再次檢查是否啟動成功

[[email protected] 3306]# service mysql start
[[email protected] 3306]# netstat -lntp | grep 3306

補充

mysql服務的啟動/重啟/停止

啟動mysql服務

# service mysqld start
重啟mysql服務

# service mysqld restart
停止mysql服務

# service mysqld stop
訪問mysql資料庫
連線mysql, 輸入初始化生成的隨機密碼

# mysql -uroot -p
修改root新密碼如 123456

mysql> alter user 'root'@'localhost' identified by '123456';
mysql> quit; 
mysql> exit;(與上等效, 都是退出mysql連線)
使用新密碼重新連線mysql

# mysql -uroot -p

windows連線linux mysql 報 (10061)錯誤

1、檢視:netstat -an|grep 3306 是空的,說明沒有在偵聽。
 解決辦法:修改/etc/my.cnf 將其中skip-networking註釋掉,然後執行netstat -an|grep 3306 就可以看到了。
2、對於伺服器來說,首選防火牆必須允許3306埠通過,可以在客戶機通過telnet 該埠測試。
 (可以關閉防火牆 service iptables stop)
3、設定用於遠端訪問的使用者,必須先對該使用者授權,允許遠端訪問。
 #mysql -uroot -p
 mysql>grant all on root.* to " identified by "123456";

------------------------------------------------------參考文件--------------------------------------

以下是小編為您精心挑選的MySQL相關內容,看看是否有所幫助