CentOS 7下原始碼安裝MySQL 5.7
①原始碼安裝,優點是安裝包比較小,只有幾十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 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相關內容,看看是否有所幫助: