1. 程式人生 > >Centos7服務器中通過編譯源碼安裝MySQL

Centos7服務器中通過編譯源碼安裝MySQL

code libaio curses clas serve lte 存儲 嘗試 授權

基於在Centos7服務器上使用 yum 安裝MySQL5.7到默認路徑

在修改文件存儲位置的時候,折騰了一番沒有將成功將datadir修改為我想要的位置

我決定再嘗試一下通過編譯源碼來自定義安裝:

首先下載MySQL5.7的源碼文件

https://dev.mysql.com/downloads/mysql/5.7.html#downloads

下載源碼文件並上傳到服務器

技術分享圖片

上圖中我已經解壓完畢

tar zxvf mysql-5.7.24.tar.gz

然後在我的home路徑下新建一個mysql文件夾,再在裏面新建一個data文件夾

mkdir -p /home/mysql/data

編譯源碼的基礎要有gcc

技術分享圖片

而且要確保cmake可以使用,如果不可以那就安裝

yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio

現在進入mysql-5.7.24路徑下,進行操作

首先進行編譯

執行

cmake -DCMAKE_INSTALL_PREFIX=/home/mysql -DMYSQL_DATADIR=/home/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 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/home/mysql

註意最後面的BOOST,MySQL的安裝需要boost,則在編譯時指定下載boost,並執行下載下來的路徑為mysql

如果沒指定則會報錯

技術分享圖片

等待編譯成功,然後執行make和make install來安裝

make && make install

經過漫長的等待,終於安裝成功啦

現在來看看mysql的路徑

技術分享圖片

****************************************************************

由於Centos7默認安裝了MariaDB,我已經將其拆卸,但是mysql的用戶組以及用戶還在,這樣我就不需要再創建了

技術分享圖片

還需要將 /home/mysql賦予給mysql

chown -R mysql:mysql /home/mysql

接下來,進入mysql的bin路徑執行命令初始化數據庫

./mysql_install_db --basedir=/home/mysql --datadir=/home/mysql/data --user=mysql

拷貝/bin路徑下的mysql.server到/etc/init.d路徑下

cp /home/mysql/bin/mysql.server /etc/init.d/mysql

配置mysql到環境變量,便於使用命令

vim /root/.bash_profile

添加mysql路徑

PATH=$PATH:$HOME/bin:/home/mysql/bin

使用source使其生效

現在可以啟動mysql試一下了

systemctl start mysql

報錯沒有 /var/lib/mysql(安裝的時候忘記截圖了)

那就自己建一個

mkdir /var/lib/mysql

權限

chown -R mysql:mysql /var/lib/mysql

再次啟動,成功了

技術分享圖片

設置開機啟動(由於不是本機native服務無法使用systemctl)

/sbin/chkconfig mysql on

然後我就遇到了一個大問題

登陸使用root用戶,但是密碼是啥呢?在默認安裝的時候(使用yum安裝)會在/var/log/下有日誌文件,裏面會有個臨時密碼用於登陸

但是在這裏,啟動的日誌文件怎麽也找不到(log文件在哪呢 /etc下都沒有my.cnf,?看到網上其他內容有說需要在初始化前自己創建/var/mysql/log還有需要修改/etc/my.cnf 我這竟然找不到

他還提示我要我輸入隨機密碼

技術分享圖片

可我根本就找不到隨機密碼在哪?

無奈我想到了一個辦法,假設我忘記了root的密碼,那肯定是有解決辦法的,找了相關資料

首先停到mysql服務

systemctl stop mysql

然後切換到mysql的bin路徑下

cd /home/mysql/bin 

執行

./mysqld_safe --skip-grant-tables &

然後使用

mysql -p

進入mysql,這時還是會提醒輸入password,只要回車就好,終於進到mysql了

然後在裏面執行

update mysql.user set authentication_string=password(‘臨時密碼‘) where user=‘root‘ and Host = ‘localhost‘;

刷新

flush privileges;

exit退出,使用命令來登陸,輸入的密碼當然是剛才設置的臨時密碼

mysql -uroot -p

但是現在還不可以使用sql語句來操作數據庫,這相當於我們剛使用臨時密碼登陸到數據庫,最先要做的就是修改密碼

ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘你的密碼‘;

現在終於可以操作mysql了,後續的授權遠程登陸等等就和前面默認安裝的mysql完全相同了

[root@Server-002 bin]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.24

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

技術分享圖片


完......

Centos7服務器中通過編譯源碼安裝MySQL