在CentOS 7.9里源码编译安装Mysql 5.7
侧边栏壁纸
  • 累计撰写 11 篇文章
  • 累计收到 2 条评论

在CentOS 7.9里源码编译安装Mysql 5.7

管理员
2023-07-04 / 0 评论 / 41 阅读 / 正在检测是否收录...

安装之前先更新一下系统

yum -y update && yum -y upgrade

清理安装环境

yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y
userdel -r mysql
rm -rf /etc/my*
rm -rf /var/lib/mysql

1. 下载mysql5.7源码包
官方下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
Select Operating System 选择 Source Code
Select OS version 选择 All Operating Systems
推荐下载第二个带boost的mysql。如果您下载了第一个不带boost的mysql,则需要您自己手动安装boost。
mysql-download-source-code.png

# 定位到相应目录
cd /usr/local/src
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.42.tar.gz

2. 带boost的mysql源码包安装

#安装依赖
yum -y install ncurses ncurses-devel bison cmake gcc gcc-c++
yum -y install openssl-devel

# 添加启动 MySQL 服务的用户
groupadd mysql
useradd mysql -s /sbin/nologin -M -g mysql
    #说明:
    # -s /sbin/nologin 用户不能登录系统
    # -M 不创建用户的HOME目录
    # -g 指定用户登录组的GID或组名
    
# 创建目录
sudo mkdir -p /usr/local/mysql
sudo mkdir -p /usr/local/mysql/data
sudo mkdir -p /usr/local/mysql/log
sudo mkdir -p /usr/local/mysql/tmp

# 或者
mkdir -p /usr/local/mysql/{data,log,tmp}

sudo chown -R mysql:mysql /usr/local/mysql

# 解压并进入目录
tar -zxvf mysql-boost-5.7.42.tar.gz
cd mysql-5.7.42

# 预编译
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DWITH_SSL=system \
-DWITH_BOOST=boost         # 从cmake到这里是一行命令,复制的时候一起复制

echo $?
0 # 如果是0,预编译通过,其他数字,表示失败,自行排错
# 编译参数的参考文档:https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html

# 如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新Cmake

# 正式编译,1-2小时
make -j4
make install

# 复制配置文件 5.7.18之后没有默认配置文件也能启动mysql
cp support-files/my-medium.cnf /etc/my.cnf

# 修改安装目录的所有者和所属组
chown -R mysql:mysql /usr/local/mysql
chgrp -R mysql /usr/local/mysql

# 初始化,生成一个临时的mysql root用户密码
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --socket=/usr/local/mysql/mysql.sock
    # 提示:
    # 生成初始化密码参数(5.7版本才有),必须要添加,否则会初始化失败,会生成空密码
    # --initialize 会为 root 用户生成一个随机的密码,这个随机密码可能会被输出到初始化过程中,也有可能输出到错误日志中
      --initialize-insecure
    # 设定初始化用户
      --user=mysql
    # 设定mysql工作目录
      --basedir=/usr/local/mysql
    # 设定数据文件目录
      --datadir=/usr/local/mysql/data

# 启动mysql,修改root密码为123456
/usr/local/mysql/support-files/mysql.server start         # 启动后,按回车回到命令行

# 登陆
/usr/local/mysql/bin/mysql -u root -p

# 修改root密码为123456
set password for root@localhost = password('123456');

# 不方便管理,系统没有mysql这个命令,没有设置开机启动。
# 先停止mysql
/usr/local/mysql/support-files/mysql.server stop

# 注册成systemd服务

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start        # 这一步自动注册成systemd服务了,可以使用systemctl管理mysql了

chmod +x /etc/init.d/mysqld
systemctl stop mysqld
systemctl start mysqld
systemctl enable mysqld

# 添加mysql、mysqldump、mysqlpump等一系列命令
vim /etc/profile
# 文件末尾追加
PATH=$PATH:/usr/local/mysql/bin

# 验证mysql命令
source /etc/profile
mysql -u root -p 
Enter password: 123456


# 开启ssl功能
/usr/local/mysql/bin/mysql_ssl_rsa_setup --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 

# 测试启动
/usr/local/mysql/bin/mysqld_safe --user=mysql
# ctrl+Z停止

CentOS开启3306端口

# 开启端口3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent

# 重启防火墙
firewall-cmd --reload

#查看已经开放的端口
firewall-cmd --list-ports


# 数据库开放root登录权限
mysql -uroot -p
use mysql
select Host,User from user;
update user set host='%' where user = 'root';
select Host,User from user;
show variables like '%port%';
flush privileges;

firewall -cmd --zone=public --remove-port=80/tcp --permanent #删除防火墙80端口

# 导入sql
mysql> source SQL文件的绝对路径
0

评论 (0)

取消