安装 cmake
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
安装编译安装时需要用的工具包
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等依赖包
./contrib/download_prerequisites
开始编译安装 gcc
mkdir build && cd build
../configure --prefix=/usr/ --enable-checking=release \
--enable-languages=c,c++ --disable-multilib
make -j4 && make install
注意了,上面那个 prefix 必须用 /usr/,以便覆盖掉旧版的 gcc ,以免编译程序找不到新版 gcc
检查验证 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"。
直接下载
cd ~
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.22.tar.gz
编译安装
tar zxvf mysql-boost-8.0.22.tar.gz
cd mysql-8.0.22
修改版本号防止版本暴露(选择性操作)
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登录