centos7.2 mysql5.7 源码安装并编译

发布时间 2023-04-04 10:12:57作者: xyz叶子


1、 卸载系统自带的mariadb*

[root@centos7_4 ~]# yum -y remove mariadb* boost-*

2、 安装依赖包

[root@centos7_4 ~]# yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel           

3、 下载源码包

[root@centos7_4 ~]# wget https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.20.tar.gz

4、 解压源码包

[root@centos7_4 ~]# tar zxf mysql-boost-5.7.20.tar.gz -C /usr/local/src/

5、 配置编译并安装

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/src/mysql-5.7.20/boost/boost_1_59_0 -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DENABLE_DTRACE=0 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_USER=mysql

编译并安装

[root@centos7_4 mysql-5.7.20]# make

[root@centos7_4 mysql-5.7.20]# make install

6、 创建数据库用户和数据目录

[root@centos7_4 ~]# useradd -M -s /sbin/nologin -r mysql  

[root@centos7_4 ~]# mkdir -p /usr/local/mysql/data          #创建数据存储目录

[root@centos7_4 ~]# chown -R mysql.mysql /usr/local/mysql/     #更改属主数组为MySQL

7、 配置my.cnf文件

[root@centos7_4 ~]# vim /etc/my.cnf             #以下是简单配置

[mysqld]

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

port=3306

socket=/usr/local/mysql/mysql.sock

symbolic-links=0

character-set-server=utf8

pid-file=/usr/local/mysql/mysqld.pid     

log-error=/var/log/mysqld.log

8、 配置MySQL启动脚本

[root@centos7_4 mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld                      #复制启动脚本到/etc/init.d

[root@centos24 mysql-5.7.20]# ll /etc/init.d/mysqld                          #默认拥有执行权限

-rwxr-xr-x 1 root root 10576 Jun  7 19:27 /etc/init.d/mysqld

[root@centos7_4 mysql]# chkconfig --add mysqld                #添加到开机启动项

[root@centos7_4 mysql]# chkconfig mysqld on                   #添加开机自启动

[root@centos7_4 mysql]# vim /etc/init.d/mysqld                #修改路径

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

[root@centos7_4 mysql]# vim /etc/profile                       #配置环境变量

export PATH=$PATH:/usr/local/mysql/bin

[root@centos7_4 mysql]# source /etc/profile                 #加载变量立即生效

配置MySQL启动脚本,这个和上面的二选一都可以

[root@centos7_4 system]# vim mysqld.service

[Unit]

Description=MySQL DBMS

 

[Service]

LimitNOFILE=10000

Type=simple

User=mysql

Group=mysql

PIDFile=/usr/local/mysql/mysqld.pid

ExecStart=/usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data

ExecStop=/bin/kill -9 $MAINPID

 

[Install]

WantedBy=multi-user.target

[root@centos7_4 system]# chmod +x mysqld.service               #添加执行权限

[root@centos7_4 system]# systemctl enable mysqld.service       #设置开机启动

 

9、 安全初始化数据库

[root@centos7_4 ~]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data      #这样初始化之后,数据库是没有密码的

如果要想初始化之后分配临时密码,可以将--initialize-insecure 红色部分去掉,初始化之后,可以分配到一个临时密码。

[root@centos7_4 ~]# /etc/init.d/mysqld start                     #启动数据库

Starting MySQL. SUCCESS!

[root@centos7_4 ~]# mysql -uroot                         #登录数据库修改root用户密码

mysql> alter user 'root'@'localhost' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)