And 1.引文
由于上一篇Mysql相关
文章出现的mysql安装和使用的问题,为了不浪费太多的时间和文章阅读视界,就没有将编译安装mysql写进去,这里就另起一篇编译安装步骤的。
And 2.正文
我这边准备了一台刚刚最小化安装的centos,只安装了net-tools方便使用,mysql都是没安装的,当然如果你mysql坏了也建议将mysql相关文件都清理一下再来操作。
And 2.1.安装环境
And 2.1.1.安装开发者工具组件
yum group list
## 列出组件列表
yum group install "开发工具"
或者用:yum group install "Development Tools"
## 安装开发者工具组件
如果不想手动选择安装项可以直接在最后面加参数“-y”来默认选yes
等待开发工具组件安装完成
And 2.1.2.安装必要依赖包
yum -y install gcc gcc-c++ cmake ncurses-devel autoconf bison perl perl-devel openssl openssl-devel
等待安装完成
And 2.2.开始编译安装
And 2.2.1.创建Mysql目录及用户组与用户
创建目录
mkdir /usr/local/mysql
mkdir /usr/local/mysql/data
创建用户组和用户
groupadd mysql
## 创建用户组
useradd -r -g mysql mysql
## 创建用户,-r定为系统账号,-g用为指定用户组;用户组为mysql,用户名为mysql,没有密码
And 2.2.2.下载解压boost包
boost库可以来提高编译效率
先在/usr/local创建文件夹
mkdir -p /usr/local/boost
## -p用于可递进创建,防止boost之前的文件夹不存在时无法创建
cd /usr/local/boost
wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
## 下载boost包,如果失效可以去其他源找找
tar -zxvf boost_1_77_0.tar.gz
## 解压boost包,-z操作gzip格式文件,-x解压操作,-v显示过程,-f显示名称
And 2.2.3.下载安装Mysql源码包
我们到mysql官网:MySQL
下拉找到社区版进入
进入下载页面拉到后面有一个直接下载链接,右击复制
然后到你的一个下载路径里
~注意!! 这里避个坑:我们虚拟机配置就那样,不配装8.0的mysql,这里我就慢慢磨了好久,上面和下方有些图片都可以看到有好些带mysql8,因为图片基本一样就没有修改了,重要的命令啥的都已经修正~
cd /下载/mysql/
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.42.tar.gz
下载完后解压一下
tar -zxvf mysql-5.7.42.tar.gz
再使用mv将文件夹移动到其他保存的路径上,随之进入这个文件夹里
mv /下载/mysql/mysql-5.7.42 /usr/local/mysql
cd /usr/local/mysql/mysql-5.7.42/
生成Makefile
## 这里注意一下
## -DWITH_BOOST=[你上面boost包解压后的路径] 这里使用1.15版本的boost即可,其他版本可能会太低或者太高不支持
## -DFORCE_INSOURCE_BUILD=1 这里是强制执行,可以先去掉这行,如果有提示需要再添加
## -DWITH_SYSTEMD=1 这条是来控制是否安装mysqld_safe
### 其他详细可以用 sudo cmake .. -LH 查看
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost
## -DWITH_SYSTEMD=1 \
## -DFORCE_INSOURCE_BUILD=1
### ------------------------------------------- ###
## CMAKE参数说明: 注意: \后面不能有空格
## -DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装路径
## -DMYSQL_DATADIR=/usr/local/mysql/data //数据文件存放位置
## -DSYSCONFDIR=/etc //my.cnf路径
## -DWITH_MYISAM_STORAGE_ENGINE=1 //支持MyIASM引擎
## -DWITH_INNOBASE_STORAGE_ENGINE=1 //支持InnoDB引擎
## -DWITH_MEMORY_STORAGE_ENGINE=1 //支持Memory引擎
## -DWITH_READLINE=1 //快捷键功能(我没用过)
## -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock //连接数据库socket路径
## -DMYSQL_TCP_PORT=3306 //端口
## -DENABLED_LOCAL_INFILE=1 //允许从本地导入数据
## -DWITH_PARTITION_STORAGE_ENGINE=1 //安装支持数据库分区
## -DEXTRA_CHARSETS=all //安装所有的字符集
## -DDEFAULT_CHARSET=utf8 //默认字符
## -DDEFAULT_COLLATION=utf8_general_ci //设置默认校对规则
### ------------------------------------------- ###
在这里生成步骤上,可能会有缺少部分环境,可以根据提示内容配置一下,直到配置没有问题:
执行完毕就可以继续使用make
编译安装
## ############################################# ##
## !!注意,编译过程将是漫长的,耐心等待即可!! ##
## ############################################# ##
make
## 编译
make test
## 测试
make install
## 安装
编译完成测试全都通过,然后就直接make install
来安装
来检查一下mysql的文件
给里面添加一个data目录:mkdir data
再移动一下源文件:
mv ./mysql-5.7.42 /usr/local/mysql
这里再给文件权限分配一下
chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql
## 上面已经提前创建好了用户组和用户,这里直接给权限就行
cd /usr/local/mysql/
chown -R mysql:mysql .
chown -R mysql:mysql /usr/local/mysql/data
## 进入mysql目录内再分配一下
这里我们先进入到mysql的bin目录
cd /usr/local/mysql/bin/
然后保证$file/mysql/data目录内容是空的,使用下面这条命令
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
cd /usr/local/mysql/
chown -R mysql:mysql .
chown -R mysql:mysql /usr/local/mysql/data
进入mysql目录内再分配一下
And 2.2.4.将Mysql添加到系统服务
然后再创建一个my-default.cnf
文件,有可能你自带是有的,我这里是没有
vi support-files/my-default.cnf
## 内容如下,如果有不同路径就改改
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/mysql.pid
log_error = /usr/local/mysql/mysql-error.log
slow_query_log = 1
long_query_time = 1
skip-external-locking
key_buffer_size = 32M
max_allowed_packet = 1024M
table_open_cache = 128
sort_buffer_size = 768K
net_buffer_length = 8K
read_buffer_size = 768K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 16
query_cache_size = 16M
tmp_table_size = 32M
performance_schema_max_table_instances = 1000
explicit_defaults_for_timestamp = true
#skip-networking
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
log_bin=mysql-bin
binlog_format=mixed
server_id = 232
expire_logs_days = 10
early-plugin-load = ""
default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 768K
read_buffer = 2M
write_buffer = 2M
使用cp命令,拷贝替换到etc下的my.cnf
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
检查一下是否成功
And 2.2.5.配置Mysql
切换到bin目录
cd /usr/local/mysql/bin/
执行mysql
./mysql -u root -p
## 登录
set password for root@localhost = password('yourpass');
## 修改密码
And 2.2.6.配置mysql命令可执行和脚本启动
#当前修改环境变量更稳定可靠的方式应该是在**/etc/profile.d文件夹内添加新的命令号,耦合性低,便于管理。例如将mysql添加进入环境变量,在该文件夹内新增mysql.sh**文件
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
source /etc/profile
service mysql start