安裝 cmakemysql
cd ~ yum -y install wget wget https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz tar zxvf cmake-3.8.2-Linux-x86_64.tar.gz mv cmake-3.8.2-Linux-x86_64 /usr/local/cmake echo -e "\nexport PATH=/usr/local/cmake/bin:\$PATH" >>/etc/profile source /etc/profile
安裝gcc
安裝編譯安裝時須要用的工具包c++
yum -y install bzip2 gcc gcc-c++
wget http://mirror.hust.edu.cn/gnu/gcc/gcc-5.5.0/gcc-5.5.0.tar.gz tar zxvf gcc-5.5.0.tar.gz cd gcc-5.5.0
下載mpfr、gmp、mpc、isl等依賴包sql
./contrib/download_prerequisites
開始編譯安裝 gccsocket
mkdir build && cd build ../configure --prefix=/usr/ --enable-checking=release \ --enable-languages=c,c++ --disable-multilib make -j4 && make install
注意了,上面那個 prefix 必須用 /usr/,以便覆蓋掉舊版的 gcc ,以避免編譯程序找不到新版 gccide
檢查驗證 gcc 版本工具
gcc -v
yum -y install ncurses-devel bison openssl-devel
下載源代碼
(可略過如下四步)
1.打開 http://mysql.com/downloads/下載頁面
2.頁面下方點擊 MySQL Community(GPL)Downloads
3.點擊 MySQL Communtiy Server
4.這個頁面的版本就是 MySQL 的最新版本,選擇 "Source Code" 下載源碼,第二欄選擇 Generic Linux (Architecture Independent), 下載選擇 "Compressed TAR Archive, Includes Boost Headers"。ui
直接下載debug
cd ~ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.22.tar.gz
編譯安裝code
tar zxvf mysql-boost-8.0.22.tar.gz cd mysql-8.0.22
修改版本號防止版本暴露(選擇性操做)server
vi MYSQL_VERSION 修改成如下內容 MYSQL_VERSION_MAJOR=100 MYSQL_VERSION_MINOR=9 MYSQL_VERSION_PATCH=99 MYSQL_VERSION_EXTRA=
cmake編譯:
cmake . \ -DWITH_BOOST=./boost/ \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/data/mysql/mysql3306/data \ -DSYSCONFDIR=/ \ -DWITH_DEBUG=1 \ -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \ -DWITHOUT_ARCHIVE_STORAGE_ENGINE=1 \ -DFORCE_INSOURCE_BUILD=1
SYSCONFDIR=/ # 修改讀取 my.cnf 的路徑 WITH_DEBUG=1 # 可 debug 的版本 WITHOUT_FEDERATED_STORAGE_ENGINE=1 \ # 摘掉 FEDERATED 存儲引擎 WITHOUT_ARCHIVE_STORAGE_ENGINE=1 \ # 摘掉 ARCHIVE 存儲引擎
編譯安裝
make -j4 && make install
如未報錯表示編譯完畢
配置環境變量
echo -e "export PATH=/usr/local/mysql/bin:\$PATH" >>/etc/profile source /etc/profile
驗證
[root@localhost mysql-8.0.22]# mysql -V mysql Ver 100.9.99 for Linux on x86_64 (Source distribution)
建組建用戶
groupadd mysql useradd -M -g mysql -s /sbin/nologin -d /usr/local/mysql mysql
建立目錄結構
mkdir -p /data/mysql/mysql3306/{data,logs,tmp} chown mysql:mysql /data/mysql/mysql3306/ -R
準備配置文件
vi /my.cnf [mysqld] user = mysql basedir = /usr/local/mysql datadir = /data/mysql/mysql3306/data tmpdir = /data/mysql/mysql3306/tmp socket = /tmp/mysql.sock log_error = /data/mysql/mysql3306/error.log
初始化實例
mysqld --initialize-insecure cd data
查看data中是否有數據
ll
啓動 MySQL
mysqld &
驗收環境
1. 確認版本號,確認是 debug 版本
cat /data/mysql/mysql3306/error.log |grep -i version mysql -V
2. 確認默認讀取的配置文件是 /my.cnf
yum install strace -y strace mysql -e "select 1" 2>2.log cat 2.log |grep my.cnf
檢查發現,讀取 /etc/my.cnf ,但後面還會讀取 /my.cnf 。
說明 SYSCONFDIR=/ 編譯參數確實生效了。
3.登陸mysql
mysql -u root -p 若是沒法登陸報錯: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
能夠用以下方式:
Mysql -u root -h 127.0.0.1 -p
密碼直接回車便可登陸
登陸後查看root的host,
mysql> use mysql; mysql> select user,host from user; root | localhost
若是root對應的爲localhost那麼修改密碼則須要執行以下
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123!@#qwe.';
若是root對應%那麼將localhost改成%便可
FLUSH PRIVILEGES; quit;
退出後若是不像加-h進行登陸那麼須要先找到mysql.sock
find / -name mysql.sock
而後作個軟鏈接
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
便可不用-h登陸