centos7 編譯安裝mysql5.7


 

 mysql源碼可以到官網下載

 

安裝依賴包

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

創建組mysql

groupadd mysql

創建用戶mysql

useradd -r -g mysql -s /bin/false -M mysql

創建mysql 的安裝目錄

 mkdir -p /usr/local/mysql

創建mysql數據存儲目錄

mkdir -p /data/mysql

修改目錄的用戶所屬

chown mysql:mysql -R /data

chown mysql:mysql -R /usr/local/mysql/

 

下載mysql源文件

tar -zxvf mysql-boost-5.7.25.tar.gz

解壓到當前目錄,然后進入mysql源文件目錄

cd mysql-boost-5.7.25

mv boots /usr/local/mysql/boost

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DENABLE_DOWNLOADS=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/mysql/boost

在這里出現了一個警告

重新執行一下上面的cmake命令,警告就沒了

 

make

可能會出現錯誤,可能是因為內存不足導致

我這里是內存不足的原因

然后添加了虛擬內存,就可以繼續編譯了

dd if=/dev/zero of=/swapfile bs=1k count=2048000      注:(count表示虛擬內存大小,我這里用了2G,一般跟物理內存一樣或者大虛擬內存一倍)

mkswap /swapfile

swapon /swapfile

然繼續編譯就OK

make

make install

 

我重新的執行了一次修改了文件所屬用戶,因為安裝后有新的目錄

chown mysql:mysql -R /data

chown mysql:mysql -R /usr/local/mysql/

 

添加環境變量

echo "export PATH=$PATH:/home/mysql/bin" >> /etc/profile

source /etc/profile

初始化數據庫  –initialize 表示默認生成一個安全的密碼,–initialize-insecure 表示不生成密碼

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

出現了一個警告和錯誤 

警告:[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit server option (see documentation for more details)

錯誤:--initialize specified but the data directory has files in it

警告的解決方法是

vim /etc/my.cnf

在[mysqld]寫入  explicit_defaults_for_timestamp=1

報錯誤的原因是因為存放數據的目錄下有文件

mv /data/mysql/* /tmp 移動走就好了

重新執行一遍初始化數據庫

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

初始化成功

 

拷貝mysql啟動文件到/etc/init.d/ ,並賦予執行權限

注:support-files/mysql.server這個文件在mysql剛編譯的目錄下(即是解壓的目錄下)

 cp support-files/mysql.server /etc/init.d/mysqld

 chmod +x /etc/init.d/mysqld

 

設置mysql開機啟動

chkconfig --add mysqld

chkconfig mysqld on

 這是我的etc.cnf配置文件

 

 啟動數據庫

service mysqld start(或者/etc/init.d/mysqld start)

進入數據庫

這里出現了一個錯誤

解決方法是修改/etc/my.cnf

添加這兩個路徑

接着又一個錯誤,可能是因為我初始化數據庫太久了,所有密碼過期了 Your password has expired. To log in you must change it using a client that supports expired passwords.

修改my.cnf 加入無密登陸數據庫

skip-grant-tables

 

 重啟mysql即可

 

重新設置mysql密碼

use mysql;  切換到user庫

grant all on * to 'root'@'localhost' identified by '123456';  一次執行會報錯

FLUSH PRIVILEGES;  刷新權限

grant all on * to 'root'@'localhost' identified by '123456';  再次執行即可

 

 %表示允許遠程登陸

localhost表示本地登陸

記得把my.cnf里的 skip-grant-tables 注釋掉或者刪除 然后再重啟服務器

重新輸入密碼進入即可

٩(๑>◡<๑)۶

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM