携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第33天,点击查看活动详情
centos编译安装mysql8.0
1:检查编译库
Mysql8.0要求gcc的版本在4.8以上,版本低于4.8,需要自行升级:
(1):
wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.gz
(2):
tar xf gcc-4.8.2.tar.gz
(3):
cd gcc-4.8.2
(4):载编译需要的依赖包:
./contrib/download_prerequisites
(5):
./configure --prefix=/usr/local/gcc-4.8.2/ --enable-bootstrap --enable-threads=posix --enable-languages=c,c++,objc,obj-c++
(6):
make -j4
(7):
make install
说明:make的时间会很长。
安装完后,还需要将原来的gcc环境用新版本的gcc替换掉,否则mysql在安装时还是用的原来的gcc,
依次执行:
mv /usr/bin/gcc /usr/bin/gcc447
mv /usr/bin/g++ /usr/bin/g++447
mv /usr/bin/c++ /usr/bin/c++447
mv /usr/bin/cc /usr/bin/cc447
ln -s /usr/local/gcc-4.8.2/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc-4.8.2/bin/g++ /usr/bin/g++
ln -s /usr/local/gcc-4.8.2/bin/c++ /usr/bin/c++
ln -s /usr/local/gcc-4.8.2/bin/gcc /usr/bin/cc
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak
ln -s /usr/local/gcc-4.8.2/lib64/libstdc++.so.6.0.18 /usr/lib64/libstdc++.so.6
接着,安装boost库:
wget -c http://sourceforge.net/projects/boost/files/boost/1.60.0/boost_1_60_0.tar.bz2 --no-check-certificate
tar xf boost_1_60_0.tar.bz2?r=&ts=1479114685&use_mirror=ncu
cd boost_1_60_0
./bootstrap.sh
./b2 stage threading=multi link=shared
./b2 install threading=multi link=shared
2:下载mysql源码包
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-el7-x86_64.tar.gz
3:准备安装mysql
(1)、 卸载系统自带的mariadb*
rpm -qa|grep mariadb
查找出结果:mariadb-libs-5.5.60-1.el7_5.x86_64
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64 #删除此或者使用yum命令删除
yum -y remove mariadb* boost-*
(2):创建mysql用户及用户组
cat /etc/group | grep mysql # 查看是否有mysql用户组
cat /etc/passwd | grep mysql # 查看是否有mysql密码
useradd -M -s /sbin/nologin mysql //创建名为mysq的用户并且没有登录权限 (不指定 -g默认创建了同名mysql的用户组)
(3):删除系统原有的my.cnf(如果存在)
rm -f /etc/my.cnf
rpm -qa | grep mysql
4:安装mysql
我下载的版本是免编译版本,因此和二进制编译安装包略有不同。
# 解压到 /usr/local/mysql/ (即安装目录)
cd /mydata
mkdir -p /usr/local/mysql
tar -zxvf mysql-8.0.21-el7-x86_64.tar.gz //解压
mv /mydata/ mysql-8.0.21-el7-x86_64.tar.gz/* /usr/local/mysql/ //移动到安装目录
创建如下目录
mkdir /usr/local/mysql/database (数据库目录)
mkdir /usr/local/mysql/log (数据库日志相关目录)
mkdir /usr/local/mysql/log/binlog (二进制日志目录)
mkdir /usr/local/mysql/log/tmp (临时文件存放目录)
touch /usr/local/mysql/log/mysqld.log (安装日志文档)
chmod -R 777 /usr/local/mysql/log/
改变mysql的属组
chown -R mysql:mysql /usr/local/mysql/
或者下面两句
chown -R mysql /usr/local/mysql/
chgrp -R mysql /usr/local/mysql/
执行安装
cd /usr/local/mysql
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/database/ --log-error=/usr/local/mysql/log/mysqld.log
此版本采用mysql_install_db 进行安装,不再使用cmake 编译安装\
/usr/local/mysql/bin/mysql_install_db # 安装命令
--initialize # 生成默认密码
--user=mysql # 指定mysql用户
--basedir=/usr/local/mysql/ # 安装目录
--datadir=/usr/local/mysql/database/ # 数据库目录
--log-error=/usr/local/mysql/log/mysqld.log # 指定日志文件,安装过程中数据库生成的初始密码就会保存到此文件中,如果不指定,生成的初始密码就是现实到安装屏幕上(建议指定)出现:
# 执行上面的命令后,什么都没有出现,是因为我们指定了 /usr/local/mysql/data/mysqld.log,安装过程都记得到此文件了,因此就不在前台显示了。
查看mysqld.log文件:
cat /usr/local/mysql/log/mysqld.log
[root@iZuf60ynur81p6k0ysvtneZ mysql]# cat /usr/local/mysql/log/mysqld.log
2020-10-14T05:41:57.620731Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2020-10-14T05:41:57.620859Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.21) initializing of server in progress as process 1352
2020-10-14T05:41:57.829126Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-10-14T05:42:00.795030Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-10-14T05:42:03.388874Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: SbBtsQla%0oY
日志显示我们安装成功:初始密码为:SbBtsQla%0oY
5:创建mysql配置文件my.cnf
vim /etc/my.cnf
# ==============粘贴内容 start ===============
[client]
port=3306
default-character-set=utf8
[mysqld]
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/database
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
[mysqld_safe]
log-error=/usr/local/mysql/log/mysqld.log
# ============ 粘贴内容 end ============
//设置此文件可执行权限
# chmod 644 /etc/my.cnf
6:启动并添加到环境变量
(1):启动mysql
#创建驱动文件
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#修改变量
# vim /etc/init.d/mysqld
大约46行 ,给以下两个变量赋值
basedir=/usr/local/mysql
datadir=/usr/local/mysql/database
chmod +x /etc/init.d/mysqld
service mysqld start //启动
(2):添加到环境变量
添加到环境变量
vim /etc/profile
在此文件最后添加如下内容:
# MYSQL
export PATH="$PATH:/usr/local/mysql/bin"
// 立即生效
source /etc/profile
// 输出环境变量
echo $PATH
7:更改默认密码
//修改密码
[root@qinser mydata]# mysql -u root -p
Enter password: <------这里输入上面的初始密码(默认密码在安装的时候我们已经从mysqld.log中获取)
mysql> alter user 'root'@'localhost' identified by '123456';
mysql> flush privileges; // 使用flush privileges在插入之后刷新系统权限相关表
Query OK, 0 rows affected (0.00 sec)
OK 新密码设置成功
8:设置开机启动
方法一:(推荐)
chkconfig --add mysqld //加入系统中,可以是使用 systemctl status mysqld.service 命令了
chkconfig mysqld on //开机自启动
方法二:
[root@VMTest mysql]# chkconfig --level 35 mysqld on
[root@VMTest mysql]# chkconfig --list mysqld
[root@VMTest mysql]# chkconfig --add mysqld
[root@VMTest mysql]# chkconfig --list mysqld
[root@VMTest mysql]# service mysqld status
至此,centos编译安装mysql8完成。
有好的建议,请在下方输入你的评论。
欢迎访问个人博客 guanchao.site
欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”