注意事项:
-
CentOS 8版本需要额外安装 libtirpc-devel 包
-
CentOS 7版本安装mysql 8.0版本需要升级cmake,gcc包版本,升级后要注意处理旧版本包,例如建立新的软连接,或者干脆删除旧版本包。CentOS 8版本本身yum源中包的版本就比较新,可以直接使用dnf命令安装即可。
-
源码安装mysql需要有boost库,最好事先下载好,然后在编译的时候指定boost路径,不推荐在线下载,可能会下载非常慢。
-
最好多核编译,内存4G以上。
-
password()函数在mysql8.0.11之后版本被废除了,不能用来修改密码了。推荐使用alter命令来修改用户密码。
-
源码安装mysql需要编译安装rpcsvc-proto包,否则在编译mysql的时候会有如下报错。
CMake Error at plugin/group_replication/libmysqlgcs/rpcgen.cmake:100 (MESSAGE):
Could not find rpcgen
Call Stack (most recent call first):
plugin/group_replication/libmysqlgcs/CMakeLists.txt:38 (INCLUDE)
- 编译时间较长,注意安排时间。
Mysql 5.7.30 源码编译安装
编译安装rpcsvc-proto-1.4.2包
tar xvf rpcsvc-proto-1.4.2.tar.xz
cd rpcsvc-proto-1.4.2/
./configure
make -j 2 ; make install
编译安装mysql
#安装相关依赖包
yum -y install make cmake gcc gcc-c++ ncurses ncurses-devel bison
#创建用户及用户组
groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin mysql
#准备mysql目录
mkdir /data/mysql
chown mysql.mysql /data/mysql
#将压缩包解压到指定目录
tar xvf boost_1_59_0.tar.bz2 -C /usr/local/
tar xvf mysql-5.7.30.tar.gz
#编译安装mysql 5.7.30
cd ../mysql-5.7.30
cmake .
-DCMAKE_INSTALL_PREFIX=/apps/mysql
-DMYSQL_DATADIR=/data/mysql
-DSYSCONFDIR=/etc
-DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8mb4
-DDEFAULT_COLLATION=utf8mb4_unicode_ci
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DENABLED_LOCAL_INFILE=1
-DENABLED_PROFILING=1
-DMYSQL_TCP_PORT=3306
-DWITH_DEBUG=0
-DDOWNLOAD_BOOST=1
-DWITH_BOOST=/usr/local/boost_1_59_0
make -j 8 && make install
#环境变量设置
##方法1:
echo 'PATH=/apps/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
##方法2:
ln -s /apps/mysql/bin/* /usr/local/bin/
#准备配置文件
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
default-character-set=utf8mb4
socket=/data/mysql/mysql.sock
[mysql]
default-character-set=utf8mb4
socket=/data/mysql/mysql.sock
[mysql]
auto-rehash
prompt="\u@\h [\d]>"
#初始化数据库
mysqld --initialize-insecure --user=mysql --basedir=/apps/mysql --datadir=/data/mysql
#准备服务脚本
cp /apps/mysql/support-files/mysql.server /etc/init.d/mysqld
#启动mysql
chkconfig --add mysqld
service mysqld start
#修改root用户密码
##方法1:
mysqladmin -u root password 'newpassword'
##方法2: 需要进入mysql数据库
update user set authentication_string=PASSWORD('newpassword') where user='root';
flush privileges;
##方法3: 需要进入mysql数据库
alter user 'root'@'localhost' identified by 'newpassword';
Mysql 8.0.20 源码编译安装
编译安装rpcsvc-proto-1.4.2包
tar xvf rpcsvc-proto-1.4.2.tar.xz
cd rpcsvc-proto-1.4.2/
./configure
make -j 2 ; make install
编译安装gcc
tar xvf gcc-10.2.0.tar.gz
cd gcc-10.2.0/
#下载必要的库
./contrib/download_prerequisites
./configure --prefix=/usr/local/gcc --enable-languages=c,c++ --disable-multilib
make -j 8 && make install
#修改软连接,查看gcc版本,或者删除旧版,将新版安装目录/bin添加到PATH变量中
mv /usr/bin/gcc /usr/bin/gcc_old
ln -s /usr/local/gcc/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++_old
ln -s /usr/local/gcc/bin/g++ /usr/bin/g++
gcc --verson
g++ --version
编译安装cmake
tar xvf cmake-3.18.4.tar.gz
cd cmake-3.18.4/
./bootstrap --prefix=/usr/local/cmake
make -j 8 && make install
编译安装mysql
#安装相关依赖包
yum -y install make cmake gcc gcc-c++ ncurses ncurses-devel bison openssl-devel libtirpc-devel
#创建用户及用户组
groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin mysql
#准备mysql目录
mkdir /data/mysql
chown mysql.mysql /data/mysql
##将压缩包解压到指定目录
tar xvf boost_1_70_0.tar.gz -C /usr/local/
tar xvf mysql-8.0.20.tar.gz
#编译安装
cd mysql-8.0.20/
cmake .
-DCMAKE_INSTALL_PREFIX=/apps/mysql
-DMYSQL_DATADIR=/data/mysql
-DSYSCONFDIR=/etc
-DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8mb4
-DDEFAULT_COLLATION=utf8mb4_unicode_ci
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DENABLED_LOCAL_INFILE=1
-DENABLED_PROFILING=1
-DMYSQL_TCP_PORT=3306
-DWITH_DEBUG=0
-DDOWNLOAD_BOOST=0
-DWITH_BOOST=/usr/local/boost_1_70_0
make -j 8 && make install
#环境变量设置
##方法1
echo 'PATH=/apps/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
##方法2
ln -s /apps/mysql/bin/* /usr/local/bin/
#准备配置文件
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
default-character-set=utf8mb4
socket=/data/mysql/mysql.sock
[mysql]
default-character-set=utf8mb4
socket=/data/mysql/mysql.sock
[mysql]
auto-rehash
prompt="\u@\h [\d]>"
#初始化数据库
mysqld --initialize-insecure --user=mysql --basedir=/apps/mysql --datadir=/data/mysql
#准备服务脚本
cp /apps/mysql/support-files/mysql.server /etc/init.d/mysqld
#启动mysql
chkconfig --add mysqld
service mysqld start
#修改root用户密码
##方法1:
mysqladmin -uroot password 'newpassword'
##方法2 : 需要进入mysql数据库
alter user 'root'@'localhost' identified by 'newpassword';