安装之前先更新一下系统
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。
# 定位到相应目录
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)