前言:
目前各位老铁们对“mysqllinux源码安装”大体比较着重,各位老铁们都想要知道一些“mysqllinux源码安装”的相关知识。那么小编也在网络上汇集了一些有关“mysqllinux源码安装””的相关文章,希望朋友们能喜欢,姐妹们一起来了解一下吧!Centos7源码安装MySQL8,填坑版
前言:
该篇篇幅过长,遇坑且多,请慎入!!!
同时致敬咱们广大的填坑先锋们。谢谢诸位填坑侠!
大家安装时都踩过什么坑,可以评论留言,共勉。
如果你做好了心理准备,详情见下:--->>>
一、安装前准备工作
1、下载MySQL官网源码包
wget
......
2、安装CMake工具。
CMake是Linux系统中一款常用的编译工具。
大家自行去官网下载tar包
(1) 解压
tar xzvf cmake-3.17.0.tar.gz
(2)编译
cd cmake-3.17.0
./configure --prefix=/usr/local/cmake-3.17.0
--prefix:配置cmake的安装目录
补:[锚点1]
如果编译错误如上图,需要安装OpenSSL工具
根据提示安装OpenSSL工具
yum isntall openssl-devel
重新编译
./configure --prefix=/usr/local/cmake-3.17.0
......
编译完成。
(3)安装
make;make install
......
(4) cmake命令软连接
ln -s /usr/local/cmake-3.17.0/bin/cmake /usr/local/bin/cmake
cmake --version
3、创建MySQL用户
创建一个名为mysql的用户,专门用于负责运行MySQL数据库。
将这类账户的Bash终端设置成nologin解释器,主要是为了限制该用户登录到服务器中,提高系统安全性。
命令:
useradd mysql -s /sbin/nologin
id mysql
cat /etc/passwd | grep mysql
4、创建MySQL数据库相关目录
创建用于保存MySQL数据库程序和数据库文件的目录,并把该目录的所有者和所属组身份修改为mysql。
/usr/local/mysql:是用于保存MySQL数据库服务程序的目录
/usr/local/mysql/var:用于保存真实数据库文件的目录
命令:
mkdir -p /usr/local/mysql/var
chown -Rf mysql:mysql /usr/local/mysql
ll /usr/local/mysql/ -d
二、开始源码安装MySQL
1、解压源码包
tar mysql-8.0.19.tar.gz
1、编译MySQL源码包
cd mysql-8.0.19
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/var -DSYSCONFDIR=/etc
(1)以上报错:[锚点2]
是它建议你不要构建源代码。
解决方法:
在配置的时候加入字段:-DFORCE_INSOURCE_BUILD=1
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/var -DSYSCONFDIR=/etc -DFORCE_INSOURCE_BUILD=1
(2) 再次报错,提示缺少git包[锚点3]
安装Git包
......
(3)再来一次
CMakeCache.txt 删除掉,它是记录了你上次的编译配置
......
(4)gcc版本过低,无法编译MySQL8[锚点4]
CentOS 7官方源的gcc最新版本是4.8.5,发布于2015年,年代久远且不支持c++14。要编译c++14及以上项目,必须要升级现有版本或者安装高版本的gcc。
方案一:手动编译升级GCC版本,但是GCC太高的话,之前使用低版本GCC编译的软件是否会存在问题?有兴趣的可以测试一下。
方案二:GCC了解的很少人,编译可能有很多隐患,不太建议编译安装。我们这里使用Software Collections。
补充:
红帽其实已经编译好了高版本的gcc,但未更新到base和epel这两个常用源中,而是将这些版本放在scl中。
安装scl
yum install centos-release-scl
yum install scl-utils
安装gcc8
yum install devtoolset-8
查看版本
补充:
这些软件包可以同时安装,不会相互覆盖和冲突,也不会覆盖系统的版本。
即可以在系统中可同时存在gcc 6,gcc 7, gcc 8等多个版本。
因为不会覆盖系统默认的gcc,使用这些软件的方法有四种:
(1)使用绝对路径
(2)添加可执行文件路径到PATH环境变量
(3)使用官方推荐的加载命令:
scl enable devtoolset-x bash, x为要启用的版本
(4)执行安装软件自带的脚本:
source /opt/rh/devtoolset-x/enable,x为要启用的版本。
推荐使用最后两种方式。
我们这里使用第(3)方式
scl enable devtoolset-8 bash
补充:
scl以及scl-rh源中的软件包都安装在/opt/rh/目录下,包含可执行文件、配置等。
启用命令的路径是/opt/rh/xxx/enable,安装的服务重启命令则是systemctl restart rh-xxx,需要加rh或scl前缀以区别其他源的包。
(5) 再次编译
......
(6) 解决没有boost的问题[锚点5]
......
......
注意目录
编译时添加-DWITH_BOOST=/usr/local/boost
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/var -DSYSCONFDIR=/etc -DFORCE_INSOURCE_BUILD=1 -DWITH_BOOST=/usr/local/boost
......
(6) 再次报错[锚点6]
安装ncurses-devel
yum -y install ncurses-devel
再次编译
......
终于编译完成!!!
3、 安装
......
需要耐心的等待......
真是命途多舛!!![锚点7]
以上均为内存不足所致,可通过设置交换分区来解决该问题。
补充:
该主机是阿里云的1核2G硬盘40G
#获取要增加2G的SWAP文件块
dd if=/dev/zero of=/swapmysql bs=1k count=2048000
#创建SWAP文件
mkswap /swapmysql
#激活SWAP文件
swapon /swapmysql
#查看SWAP信息是否正确
swapon -s
#添加到fstab文件中让系统引导时自动启动
echo "/swapmysql swap swap defaults 0 0" >> /etc/fstab
补充:
编译完后,如果不想要交换分区可以删除。
swapoff /swapmysql
rm -rf /swapmysql
再次安装
......
漫长的等待......
......
终于看到曙光了
编译安装好,下面的操作就方便了。
三、配置及初始化数据库
1、修改配置文件
根据自己的实际情况编写
2、初始化数据库
--user:指定MySQL服务的对应账号名称
--datadir:指定MySQL真实数据库的文件保存目录,这样即可生成系统数据库文件,也会生成出新的MySQL服务配置文件。
./bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/var
注意:
下图标红的临时密码
安装ssl
./bin/mysql_ssl_rsa_setup
四、启动数据库
1、复制启动脚本
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
2、修改脚本
3、开启mysql服务
service mysqld start
4、加入启动项
5、将mysql自带的一些命令加入环境变量
五、修改密码及配置远程登录
1、登陆
mysql -u root -p
注意:
密码是刚刚生成的临时密码
2、修改密码
alter user user() identified by 'yourpassword';
flush privileges;
3、退出重新以新密码登录
最后补充:
关于配置远程登录,我这里做测试用,比较简单
大家可以自行配置允许访问的主机等等
测试
总结:
一路下来大概花费了大半天,没细算,大概从晚上6点样子到11点多。
总之,源码安装还是比较考验人的耐力。
借助一位网红的话:
不管遇到什么困难
微笑着面对它
坚持才是胜利
加油
奥利给!
最后感谢大家支持
标签: #mysqllinux源码安装