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导致安装失败
问题2:编译安装中途报错
解决方案:只能重新编译一下
# 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
启动异常的解决方案:
查看mysql.itcast.cn.err这个错误日志(注:你电脑里的日志文件名可能不一样,它是格式是 主机名.err,如果你的主机名是study1,那么这个文件名为study1.err)
出现以上问题的主要原因在于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