linux下源码编译安装mysql-5.7.31

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下源码编译安装mysql-5.7.31相关的知识,希望对你有一定的参考价值。

安装需求

安装需求

具体配置

安装目录(basedir)

/mysql_3307

数据目录(datadir)

/mysql_3307/data

端口号

3307

socket文件位置

$basedir/mysql.sock

字符集

utf8mb4

了解配置选项

  • 常用配置选项

配置选项

描述

默认值

建议值

CMAKE_INSTALL_PREFIX

安装基目录(basedir)

/usr/local/mysql

根据需求

MYSQL_DATADIR

数据目录(datadir)

$basedir/data

根据需求

SYSCONFDIR

默认配置文件my.cnf路径


/etc

MYSQL_TCP_PORT

TCP/IP端口

3306

非默认端口

MYSQL_UNIX_ADDR

套接字socket文件路径

/tmp/mysql.sock

$basedir/

DEFAULT_CHARSET

默认字符集

latin1

utf8mb4

DEFAULT_COLLATION

默认校验规则

latin1_swedish_ci

utf8mb4_general_ci

WITH_EXTRA_CHARSETS

扩展字符集

all

all

ENABLED_LOCAL_INFILE

是否启用本地加载外部数据文件功能

OFF

建议开启

WITH_SSL

SSL支持类型

system

建议显式指定

WITH_BOOST

Boost库源代码的位置


Boost库是构建MySQL所必需的,建议事先下载

  • 存储引擎相关配置项

说明:

以下选项值均为布尔值,0或1;0代表不编译到服务器中,1代表编译,建议都静态编译到服务器中。

其他的存储引擎可以根据实际需求在安装时通过WITH_xxxx_STORAGE_ENGINE=1的方式编译到服务器中。

配置选项

描述

WITH_INNOBASE_STORAGE_ENGINE

将InnoDB存储引擎插件构建为静态模块编译到服务器中;建议编译到服务器中

WITH_PARTITION_STORAGE_ENGINE

是否支持分区

WITH_FEDERATED_STORAGE_ENGINE

本地数据库是否可以访问远程mysql数据

WITH_BLACKHOLE_STORAGE_ENGINE

黑洞存储引擎,接收数据,但不存储,直接丢弃

WITH_MYISAM_STORAGE_ENGINE

将MYISAM存储引擎静态编译到服务器中

MySQL的源码编译安装

第一步:安装MySQL编译需要用到的依赖库

# yum -y install ncurses-devel cmake libaio-devel openssl-devel

第二步:上传软件到服务器端并解压

# tar -xf mysql-boost-5.7.31.tar.gz
# cd mysql-5.7.31

第三步:配置(基于cmake进行配置)

# vim myconfig.sh
cmake . \\
-DCMAKE_INSTALL_PREFIX=/mysql_3307 \\
-DMYSQL_DATADIR=/mysql_3307/data \\
-DMYSQL_TCP_PORT=3307 \\
-DMYSQL_UNIX_ADDR=/mysql_3307/mysql.sock \\
-DWITH_INNOBASE_STORAGE_ENGINE=1 \\
-DWITH_PARTITION_STORAGE_ENGINE=1 \\
-DWITH_FEDERATED_STORAGE_ENGINE=1 \\
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \\
-DWITH_MYISAM_STORAGE_ENGINE=1 \\
-DENABLED_LOCAL_INFILE=1 \\
-DEXTRA_CHARSETS=all \\
-DDEFAULT_CHARSET=utf8mb4 \\
-DDEFAULT_COLLATION=utf8mb4_general_ci \\
-DWITH_SSL=system \\
-DWITH_BOOST=boost
# chmod +x myconfig.sh
# ./myconfig.sh


-DCMAKE_INSTALL_PREFIX
-DMYSQL_DATADIR
-DMYSQL_TCP_PORT
-DMYSQL_UNIX_ADDR

第四步:编译安装

# make -j4 && make install

-j4 线

编译报错常见问题解析

问题1:没有boost导致安装失败

linux下源码编译安装mysql-5.7.31_sed

问题2:编译安装中途报错

linux下源码编译安装mysql-5.7.31_服务器_02

解决方案:只能重新编译一下

# rm -f CMakeCache.txt
# make -j4 && make install

补充:我中途遇到了编译中途报错的情况,虚拟机关机,把内存调到4096MB(即4GB),然后开机再次执行make -j4 && make install 命令就可以了。注:其实不必删除CMakeCache.txt文件,删除了该文件还要重头再来,而直接执行编译安装命令,会继续上次出错的地方。

MySQL数据库的初始化

注意:进入到安装目录里/mysql_3307

# cd /mysql_3307

第一步:创建mysql-files目录

`secure_file_priv`
# mkdir mysql-files
# chown -R mysql:mysql /mysql_3307
# chmod 750 mysql-files

第二步:数据库初始化操作

# bin/mysqld --initialize --user=mysql --basedir=/mysql_3307 --datadir=/mysql_3307/data
...
2020-08-24T11:07:37.621346Z 1 [Note] A temporary password is generated for root@localhost: O6.iHqrZgzz7

第三步:拷贝mysql.server脚本到/etc/init.d目录,然后启动数据库

# cp support-files/mysql.server /etc/init.d/mysql_3307
# service mysql_3307 start

启动异常的解决方案:

linux下源码编译安装mysql-5.7.31_mysql_03

查看mysql.itcast.cn.err这个错误日志(注:你电脑里的日志文件名可能不一样,它是格式是 主机名.err,如果你的主机名是study1,那么这个文件名为study1.err)

linux下源码编译安装mysql-5.7.31_服务器_04

出现以上问题的主要原因在于mysql这个用户对/mysql_3307目录没有写入文件的权限,写入mysql_socket套接字文件。

解决方案:

# chown -R mysql.mysql /mysql_3307

MySQL源码编译安装后的后续配置

第一步:编写MySQL配置文件,my.cnf

# vim /mysql_3307/my.cnf
[mysqld]
basedir=/mysql_3307
datadir=/mysql_3307/data
socket=/mysql_3307/mysql.sock

# service mysql_3307 restart

第二步:设置管理员的密码

# bin/mysqladmin -uroot password 123 -p
Enter password:O6.iHqrZgzz7

第三步:安全设置

# bin/mysql_secure_installation

第四步:添加mysql_3307到开机启动项

# chkconfig --add mysql_3307
# chkconfig mysql_3307 on





linux下源码编译安装mysql详解

linux下源码编译安装mysql详解

1.redhat5环境下,首先安装编译环境

yum groupinstall -y  "Development Libraries"   "Development Tools"

2.由于源码编译mysql需要cmake命令,所以先要编译安装cmake包

 首先下载cmake包,这里下载使用cmake-2.8.8.tar.gz

 tar xf cmake-2.8.8.tar.gz

 cd cmake-2.8.8

 ./configure 

 make && make install

3.使用cmake编译mysql

cmake指定编译选项的方式不同于make,其实现方式对比如下:

./configure       相当于     cmake .

./configure --help  相当于     cmake . -LH 或者 ccmake .

4.开始正式编译安装mysql,这里下载使用mysql-5.5.50.tar.gz

groupadd -g 306 mysql

useradd -g 306 -u 306 -M -s /sbin/nologin mysql

mkdir -pv /mydata

mount /dev/VG01/LV01 /dev/mydata  #新增一个LVM(省略)并将其挂载至/mydata

mkdir -pv /mydata/data

chown -R mysql.mysql /mydata/data

tar xf mysql-5.5.50.tar.gz

cd mysql-5.5.50

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

> -DMYSQL_DATADIR=/mydata/data \   #mysql数据存放路径

> -DSYSCONFDIR=/etc \

> -DWITH_INNOBASE_STORAGE_ENGINE=1 \

> -DWITH_ARCHIVE_STORAGE_ENGINE=1 \

> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

> -DWITH_READLINE=1 \

> -DWITH_SSL=system \

> -DWITH_ZLIB=system \

> -DWITH_LIBWRAP=0 \

> -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \

> -DDEFAULT_CHARSET=utf8 \

> -DDEFAULT_COLLATION=utf8_general_ci


make 

make install

下面安装如同通用二进制格式安装mysql,如不太熟悉可查看我前面博客

chown -R .mysql /usr/local/mysql/     #更改属组

scripts/mysql_install_db --user=mysql --datadir=/mydata/data/

cp support-files/my-huge.cnf /etc/my.cnf 

cp support-files/mysql.server /etc/init.d/mysqld   #拷贝启动脚本

chkconfig --add mysqld

chkconfig mysqld on

service mysqld start

netstat -antlp | grep 3306    #查看mysql启动状态

ehco "/usr/local/mysql/bin" >> /etc/profile.d/mysql.sh  #修改mysql环境变量

source /etc/profile.d/mysql.sh

mysql                  #连接测试mysql

技术分享

5.编译安装mysql时常用选项解释


5.1.指定安装文件的安装路径时常用的选项:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql

-DMYSQL_DATADIR=/data/mysql

-DSYSCONFDIR=/etc


5.2.默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,如下选项:

-DWITH_INNOBASE_STORAGE_ENGINE=1

-DWITH_ARCHIVE_STORAGE_ENGINE=1

-DWITH_BLACKHOLE_STORAGE_ENGINE=1

-DWITH_FEDERATED_STORAGE_ENGINE=1


5.3.若要明确指定不编译某存储引擎,可以使用类似如下的选项:

-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1

比如:

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1

-DWITHOUT_FEDERATED_STORAGE_ENGINE=1

-DWITHOUT_PARTITION_STORAGE_ENGINE=1


5.4.如若要编译进其它功能,则可使用类似如下选项来实现编译时使用某库或不使用某库:

-DWITH_READLINE=1

-DWITH_SSL=system  #开启ssl功能

-DWITH_ZLIB=system

-DWITH_LIBWRAP=0   #取消tcp_wrap功能


5.5.其它常用的选项:

-DMYSQL_TCP_PORT=3306

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock

-DENABLED_LOCAL_INFILE=1

-DEXTRA_CHARSETS=all

-DDEFAULT_CHARSET=utf8

-DDEFAULT_COLLATION=utf8_general_ci

-DWITH_DEBUG=0

-DENABLE_PROFILING=1


5.6.如果想清理此前的编译所生成的文件,则需要使用如下命令:

make clean

rm CMakeCache.txt


本文出自 “夏维柳” 博客,请务必保留此出处http://willow.blog.51cto.com/6574604/1792039

以上是关于linux下源码编译安装mysql-5.7.31的主要内容,如果未能解决你的问题,请参考以下文章

Linux企业运维--LAMP架构---(LinuxApachemysqlphp)

centos7 自动化脚本编译安装mysql-boost-5.7.31

Centos非root用户二进制安装配置Mysql5.7.31

linux下如何编译源码包或者说是安装

DELPHI里边有个控件想改改源码重编译,可否

linux下源码编译安装mysql详解