在Linux源码安装Mysql,首先需要安装C++的编译环境,本文假定您的Linux系统已经安装了C++编译环境,并且使用非root账号进行源码安装Mysql。为了方便起见,将所需软件都保存在云盘,您可以方便下载
安装Cmake工具
Cmake工具云盘下载地址 https://pan.baidu.com/s/1hMvLLsb3xFPubP5eWbQfPg
下载cmake-3.5.2.tar.gz到 /opt/apps/soft目录
$>cd /opt/app/soft
$>tar zxvf cmake-3.5.2.tar.gz 解压cmake
$>cd cmake-3.5.2
$>./bootstrap --prefix=/opt/apps/cmake 如果本机没有/opt/apps/cmake,请新建
$>gmake
$>gmake install 编译安装过程大约20分钟
$>cd /opt/apps/cmake/bin
$>./cmake --version
cmake version 3.5.2
cmake安装成功
安装Mysql
下载 boost_1_59_0.tar.gz https://pan.baidu.com/s/175bETvJhbMSUJMK4QaFHUg
下载 mysql-5.7.9.tar.gz
https://pan.baidu.com/s/1JInQlu8ASRhvr9Yi0WR6gQ
将boost_1_59_0.tar.gz 下载到/opt/apps/soft/mysql目录下
将mysql-5.7.9.tar.gz 下载到/opt/apps/soft/mysql目录下
解压boost_1_59_0.tar.gz
$>cd /opt/apps/soft/mysql
$>tar -zxvf boost_1_59_0.tar.gz
在/opt/apps/soft/mysql目录下生成boost_1_59_0目录
解压mysql-5.7.9.tar.gz
$>cd /opt/apps/soft/mysql
$>tar -zxvf mysql-5.7.9.tar.gz
在/opt/apps/soft/mysql目录下生成mysql-5.7.9目录
创建Mysql数据文件目录
$>mkdir -p /opt/data/mysql
将当前目录转移到mysql-5.7.9
$>cd /opt/apps/soft/mysql/mysql-5.7.9/
使用cmake工具编译Mysql
$>/opt/apps/cmake/bin/cmake . -DCMAKE_INSTALL_PREFIX=/opt/apps/mysql -DMYSQL_DATADIR=/opt/data/mysql -DWITH_BOOST=…/boost_1_59_0 -DSYSCONFDIR=/opt/apps/etc
/opt/apps/cmake/bin/cmake . -DCMAKE_INSTALL_PREFIX=/opt/apps/mysql -DMYSQL_DATADIR=/opt/data/mysql -DWITH_BOOST=../boost_1_59_0 -DSYSCONFDIR=/opt/apps/etc
/opt/apps/etc是Mysql配置文件所在位置,如果此目录没有请创建
这个命令可以执行,还有一个参数更全的,没有尝试过
/opt/apps/cmake/bin/cmake -DCMAKE_INSTALL_PREFIX=/opt/apps/mysql \
-DMYSQL_DATADIR=/opt/data/mysql \
-DWITH_BOOST=../boost_1_59_0 \
-DSYSCONFDIR=/opt/apps/etc \
-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 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_SYSTEMD=1
接下来执行
$>make
$>make install
总共编译安装时间大概1小时
编译安装完成后在目录
/opt/apps/mysql
初始化数据库
$>/opt/apps/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/opt/apps/mysql --datadir=/opt/data/mysql
启动Mysql
$>/opt/apps/mysql/bin/mysqld
设置Mysql密码
$>/opt/apps/mysql/bin/mysqladmin -u root password ‘root’
连接数据库
$>/opt/apps/mysql/bin/mysql -uroot -proot
创建数据库
Mysql>create database test character set utf8;
Mysql配置文件
在/opt/apps/mysql目录下新建my.cnf文件
[client]
port = 3306
socket = /opt/apps/mysql/mysql.sock
default-character-set = utf8
[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
init-connect ='SET NAMES utf8'
max_allowed_packet = 64M
bind-address = 127.0.0.1
port = 3306
datadir=/opt/data/mysql
socket = /opt/apps/mysql/mysql.sock
innodb_file_per_table=1
lower_case_table_names=1 #表名,1不区分大小写,0表示区分
innodb_buffer_pool_size = 4G
[mysqld_safe]
timezone = '+0:00'
设置启动脚本
非root用户不可以改写/etc目录下的文件,需要root用户
cp /opt/apps/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
systemctl enable mysqld
非root用户也可以自定义启动脚本startmysql.sh
#!/bin/bash
mysqld --init-file=/opt/apps/mysql/my.cnf &
启动脚本
#!/bin/bash
/opt/apps/mysql/bin/mysqld --bind-address=0.0.0.0 --port=3306 --lower-case-table-names=1 --sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION &