开始搭自研项目的服务器环境,先装个MySQL,之前只在测试机上玩5.5版本,现在MySQL版本已出到8.0,号称性能提升不少,准备尝尝鲜,不知后面会有多少什么莫明问题等着解决。
一.环境准备 yum install ncurses-devel -y yum install libaio -y yum install glibc-devel.i686 glibc-devel -y yum install gcc gcc-c++ -y 另外,MySQL8.0需要用gcc的版本为 4.8以上,而centos 6.9通过yum只能安装到4.4.7,所以在安装mysql8.0之前需要手动安装更高版本的gcc,我这里下载了gcc-8.1.0。
先安装gcc-8.1.0依赖包:
然后解压GCC包,进入文件夹 运行脚本,自动下载编译需要的依赖包:
./contrib/download_prerequisites
运行脚本时,在下载gmp-6.1.0.tar.bz2,报错中止。
我打开脚本,依据脚本里的网址,手动下载了gmp,并把之前下载的软件包一并手动安装:
1.解压安装gmp tar -jxf gmp-6.1.0.tar.bz2
cd gmp-6.1.0
./configure –prefix=/usr/local/gmp-6.1.0
make
make install
2.解压安装mpfr tar -jxf mpfr-3.1.4.tar.bz2
cd mpfr-3.1.4 ./configure –prefix=/usr/local/mpfr-3.1.4 –with-gmp=/usr/local/gmp-6.1.0
make
make install
3.解压安装mpc tar -zxf mpc-1.0.3.tar.gz cd mpc-1.0.3
./configure –prefix=/usr/local/mpc-1.0.3 –with-gmp=/usr/local/gmp-6.1.0 –with-mpfr=/usr/local/mpfr-3.1.4
make
make install
4.解压安装isl-0.18.tar.bz2 tar -zxf isl-0.18.tar.bz2 cd isl-0.18
./configur –prefix=/usr/local/isl-0.18
make
make install
配置库路径:
vi /etc/profile #向/etc/profile文件末尾添加下面的语句(root权限下):
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gmp-6.1.0/lib: /usr/local/mpfr-3.14/lib:/usr/local/mpc-1.0.3/lib:/usr/local/isl-0.18/lib
#source /etc/profile #使其立即生效 #echo $LD_LIBRARY_PATH #查看配置是否成功
/usr/local/gmp-6.1.0/lib:/usr/local/mpfr-3.14/lib:/usr/local/mpc-1.0.3/lib:/usr/local/isl-0.18/lib
#显示这个表示成功
vi /etc/ld.so.conf #编辑这个文件,添加下面路径
/usr/local/gmp-6.1.0/lib /usr/local/mpfr-3.14/lib /usr/local/mpc-1.0.3/lib /usr/local/isl-0.18/lib /usr/local/lib /usr/lib
ldconfig #重建/etc/ld.so.cache strings /etc/ld.so.cache |grep
libisl #查看库文件是否能被加载
开始编译安装GCC
./configure –prefix=/usr/local/gcc-8.1.0/ –enable-bootstrap –enable-threads=posix –enable-languages=c,c++,objc,obj-c++ –disable-multilib –with-gmp=/usr/local/gmp-6.1.0 –with-mpfr=/usr/local/mpfr-3.1.4 –with-mpc=/usr/local/mpc-1.0.3 –with-isl=/usr/local/isl-0.18 make
make
make install
删除旧版软件
rpm -qa |grep gcc
列出机器上已安装的旧版软件包,用rpm -e 命令删去,否则后面安装软件时可以会调用到旧的程序。
配置GCC
vi /etc/profile #向/etc/profile文件末尾添加下面的语句(root权限下):
export PATH=$PATH:/usr/local/gcc-8.1.0
source /etc/profile #使其立即生效
ln -sf /usr/local/gcc-8.1.0/bin/gcc /usr/bin/gcc #使新版本建立软连接
ln -sf /usr/local/gcc-8.1.0/bin/gcc /usr/bin/cc
ln -sf /usr/local/gcc-8.1.0/bin/g++ /usr/bin/g++
ln -sf /usr/local/gcc-8.1.0/bin/c++ /usr/bin/c++
gcc –version #查看配置是否成功
update-alternatives –install /usr/bin/gcc gcc /usr/local/gcc-8.1.0/bin/gcc –slave /usr/bin/g++ g++ /usr/local/gcc-8.1.0/bin/g++
update-alternatives –config gcc
重新安装Python3
安装 Python 之前,请确保系统中已经有了所有必要的开发依赖:
yum -y groupinstall development
yum -y install zlib-devel
yum install python-devel
解压安装包:
tar -zxf Python-3.6.5.tgz
cd Python-3.6.5
./configure –prefix=/usr/local/python3
make && make install
ln -sf /usr/local/python3/bin/python3 /usr/bin/python3
python3 -V
安装boost库:
tar -zxf boost_1_60_0.tar.gz
cd boost_1_60_0
./bootstrap.sh –with-python=python3
./b2 stage threading=multi link=shared
./b2 install threading=multi link=shared
这里会报一个错误:
./boost/python/detail/wrap_python.hpp:50:11: 致命错误:pyconfig.h No such file or directory
原因为boost的原生错误,
需要修改安装脚本python.jam:
vim /packages/boost_1_60_0/tools/build/src/tools/python.jam
在542行:
将includes ?= $(prefix)/include/python$(version);改成
includes ?= $(prefix)/include/python$(version)m;
重新安装boost:
./bootstrap.sh –with-python=python3
./b2 stage threading=multi link=shared
./b2 install threading=multi link=shared
果然不让人失望,又报出:
gcc.compile.c++ bin.v2/libs/iostreams/build/gcc-8.1.0/release/threading-multi/bzip2.o
libs/iostreams/src/bzip2.cpp:20:10: 致命错误:bzlib.h:没有那个文件或目录
#include “bzlib.h” // Julian Seward’s “bzip.h” header.
^~~~~~~~~
编译中断。
到网站:http://www.bzip.org/downloads.html
下载到bzip2-1.0.6.tar.gz
tar -zxf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make && make install
这样就可以找到/usr/local/include/bzlib.h
重新执行:
./b2 install threading=multi link=shared
boost 安装完成。
安装mysql8.0
装到这步发现我下载的MySQL8.0包好像不对,原先是mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz,这个好像不用编译,直接解压就可以用,但我试着初始化运行,有报错,网上搜索发现还有另外编译版本mysql-boost-8.0.11.tar.gz(自带boost)和mysql-8.0.11.tar.gz,因为上面装过boost,就采用没有带boost版本,结果报错说版本要boost_1_66_0以上,之前装的版本太低,只得再换mysql-boost-8.0.11.tar.gz安装。
后面的安装也没有那么一帆风顺,先执行cmake命令:
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_TCP_PORT=3306 \
-DWITH_BOOST=/packages/mysql-8.0.11/boost \
-DMYSQL_DATADIR=/data/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1\
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DCOMPILATION_COMMENT=’mysql test’ \
-DWITH_READLINE=ON \
-DSYSCONFDIR=/data/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock
再make
这时报出cc1plus: 错误:无法识别的命令行选项“-std=c++11”。
这个问题就是因为我机子上GCC旧版本没删除,但和搜索到的文章说的情况都不一样,我/usr/bin中关联的gcc,g++等都是新版,也找不到旧版的安装目录,实在找不到能解决问题的相关文章,后来是用rpm -qa|grep gcc找出安装包名称,删除掉后,重新做关联才解决。解决方法已整合到上面GCC安装部分内容中。
然后make && make install,一切正常。
先是创建MySQL账号:
useradd -s /sbin/nologin mysql
tar -zxf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
cp -R mysql-8.0.11-linux-glibc2.12-x86_64 /usr/local/mysql
mkdir -p /opt/mysql/mysql3306/
chown -R mysql.mysql /opt/mysql
chown -R mysql.mysql /usr/local/mysql
vim /etc/profile
加入如下配置:
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
source /etc/profile
vim /etc/my.cnf
[mysqld]
user = mysql
port = 3306
socket = /opt/mysql/mysql3306/mysql.sock
basedir = /opt/mysql
datadir = /opt/mysql/mysql3306
pid-file = /opt/mysql/mysql3306/mysql.pid
relay-log = /opt/mysql/mysql3306/relay-bin
relay-log-info-file = /opt/mysql/mysql3306/relay-log.info
server-id = 1
[mysqld_safe]
log-error = /opt/mysql/mysql3306/mysql.err
pid-file = /opt/mysql/mysql3306/mysql.pid
配置文件中的参数须与编译时给的参数相同。
配置服务启动Mysql服务
cp support-files/mysql.server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld
chkconfig –add mysqld
chkconfig mysqld on
service mysqld start
初始化数据库
# 有密码初始化
mysqld –initialize –user=mysql
# 无密码初始化
mysqld –initialize-insecure –user=mysql
如报如下错误:
mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
yum -y install numactl #安装这个即可。
登录mysql:
mysql -u root -p
Enter password: (enter the random root password here) #有生成随机密码时
或
mysql -u root –skip-password #无密码初始化时
修改密码:
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘new_password’;
初始化数据表及权限
mysql_secure_installation