Centos7下编译安装mysql5.7.25
下载源码
右键复制下载链接,回到centos用 wget下载。
解压源代码
tar -xvf 压缩包 解压完后cd到源码目录
创建用于启动mysql服务的用户(此用户不能登录系统)

安装依赖
在编译前需要先安装依赖
1 |
yum -y install gcc gcc-devel gcc-c++ gcc-c++-devel autoconf* automake* zlib* libxml*ncurses-devel ncurses libgcrypt* libtool* cmake openssl openssl-devel bisonbison-devel perl-Data-Dumper boost boost-doc boost-devel |
预编译
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
cmake \ -DBUILD_CONFIG=mysql_release \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DSYSCONFDIR=/usr/local/mysql/conf \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \ -DSYSTEMD_PID_DIR=/usr/local/mysql \ -DMYSQL_USER=mysql \ -DWITH_SYSTEMD=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_TCP_PORT=3306 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLE_DOWNLOADS=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_DEBUG=0 \ -DMYSQL_MAINTAINER_MODE=0 \ -DWITH_SSL:STRING=bundled \ -DWITH_ZLIB:STRING=bundled \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=./boost 参数解析: cmake\ -DBUILD_CONFIG=mysql_release\ #此选项使用Oracle使用的相同构建选项配置源分发,以生成官方MySQL版本的二进制分发。 -DCMAKE_BUILD_TYPE=RelWithDebInfo \ #要生成的构建类型 = 启用优化并生成调试信息。这是默认的MySQL构建类型。 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql\ #选项表示基本安装目录。 -DMYSQL_DATADIR=/usr/local/mysql/data \ #MySQL数据目录的位置。 -DSYSCONFDIR=/usr/local/mysql/conf \ #默认my.cnf选项文件目录。 -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \ #服务器侦听套接字连接的Unix套接字文件路径。这必须是绝对路径名。默认是/tmp/mysql.sock。 -DSYSTEMD_PID_DIR=/usr/local/mysql \ #当MySQL由systemd管理时,在其中创建PID文件的目录的名称。默认是 /var/run/mysqld; 这可能会根据INSTALL_LAYOUT值隐式更改 。 -DMYSQL_USER=mysql \ #指定MySQL的启动用户 -DWITH_SYSTEMD=1 \ #安装systemd支持文件 -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_TCP_PORT=3306 \ #配置 MySQL 监听的端口号 -DENABLED_LOCAL_INFILE=1 \ #使mysql客户端具有load data infile的功能,该功能具有安全隐患 load data infile语句从一个文本文件中以很高的速度读入一个表 -DENABLE_DOWNLOADS=1 \ #googlemock发行版的路径,用于基于Google Test的单元测试。=1,CMake将从GitHub下载发行版。 -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ #服务器字符集 -DDEFAULT_COLLATION=utf8_general_ci \ #服务器排序规则 -DWITH_DEBUG=0 \ #不包含调试支持。 -DMYSQL_MAINTAINER_MODE=0 \ #是否启用MySQL维护者特定的开发环境。如果启用,此选项会导致编译器警告变为错误。 -DWITH_SSL:STRING=bundled \ -DWITH_ZLIB:STRING=bundled \ -DDOWNLOAD_BOOST=1 \ #是否下载Boost库。默认是 OFF。 -DWITH_BOOST=./boost #指定Boost库目录位置,我们下在的包包含 boost库 |
mysql官网有更详细的解释:https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
查看预编译结果
1 |
echo $? ## 非0为失败 |
编译&&安装
1 |
make && make install |
到这里 mysql就已经装上了 剩下的就是配置的修改了
添加systemd服务
注意:你当前应该还是源码的更目录下
1 |
cp ./scripts/mysqld.service /usr/lib/systemd/system |
环境变量
1 2 3 4 5 |
cat > /etc/profile.d/mysql.sh << EOF PATH=/opt/mysql/bin:$PATH export PATH EOF source /etc/profile # 刷新配置 |
初始化mysql
1 2 |
# 注意:要确保 mysql 数据文件存放的目录(/usr/local/mysql/data)不存在别的文件,可运行 rm -rf /usr/local/mysql/data/* 命令情况文件夹下的数据 /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ |
服务开机自启
1 2 |
systemctl enable mysqld.service ## disable 可以禁止服务自启 systemctl daemon-reload |
手动启动mysql服务
1 |
systemctl start mysqld.service ## status 可以查看服务状态 || stop 可关闭服务 |

原创文章,作者:calvin chan,如若转载,请注明出处:https://www.calvinyuki.com/1693.html