centos7(虚拟机)
MySQL-comunity.5.7.29
希望通过详细的介绍,让初学者明白整个编译安装的思路,大概的一个方向,不是简单的停留在敲命令上。这对于编译安装的理解有很大的帮助。
链接: link,https://dev.mysql.com/doc/refman/5.7/en/source-installation.html
yum install cmake ncurses-devel gcc gcc-c++ vim lsof bzip2 openssl-devel -y
这里的关系可以看官方文档,安装之前一定记得先安装这些软件。
注意下载保存的位置
1.wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-5.7.29-1.el7.src.rpm
2.curl -o https://downloads.mysql.com/archives/get/p/23/file/mysql-community-5.7.29-1.el7.src.rpm
两种方法选其一
rpm -ivh mysql-community-5.7.29-1.el7.src.rpm
将会生成一个 rpmbuilt
目录,默认路径为root用户的家目录下。在路径/root/rpmbuilt/SOURCES
下,就可以看到mysql-5.7.29.tar.gz和boost_1_59_0.tar.bz2
tar xf mysql-5.7.29.tar.gz
tar xf boost_1_59_0.tar.bz2
mv boost_1_59_0 mysql-5.7.29
进入步骤3中的目录将其解压,这里划重点,同时也要将boost库解压,将其移动到mysql-5.7.29
中。
useradd -r -s /sbin/nologin mysql
mkdir -p /data/mysql
下一步中将会要设置mysql的启动用户和存放数据的文件,所以提前将其新建好。
cd mysql-5.7.29
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost_1_59_0
这里一定要先进入到mysql-5.7.29
这个目录下,再运行,生成配置文件 Makefile
。
下面介绍cmake常用的参数:
-DCMAKE_INSTALL_PREFIX=/xxx/x
-DMYSQL_DATADIR=/xxx/xxx/xx
-DSYSCONFDIR=/xx/xx
-DMYSQL_USER=mysql
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_BOOST=boost_1_59_0
#编译,启动2个进程去编译,加快速度
make -j 2
前提也是要在mysql-5.7.29
目录下执行命令。这里根据自己电脑的配置选择进程去编译。在硬件允许的条件下,越多越好。这里编译大概需要20分钟左右,具体由电脑配置决定。
#安装
make install
执行该命令需在编译好的mysql-5.7.29
文件里,否则找不到上面步骤产生的编译配置文件。
cp /etc/my.cnf /root/mysql.cnf.bak
>/etc/my.cnf
原配置文件为Linux自带mariadb的。
配置的内容如下:
[mysqld_safe]
log-error=/data/mysql/mysql.log
[client]
socket=/data/mysql/mysql.sock
[mysqld]
socket=/data/mysql/mysql.sock
port = 3306
open_files_limit = 8192
innodb_buffer_pool_size = 256M
[mysql]
auto-rehash
prompt=\\u@\\d \\R:\\m mysql>
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql &>/root/temp_password.txt
初始化mysqld,并将临时密码重定向到 /root/temp_password.txt
里。
#修改PATH变量
echo 'PATH=$PATH:/usr/local/mysql/bin' >>/etc/bashrc
#关闭防火墙firewalld服务
service firewalld stop
#设置firewalld服务开机不启动
systemctl disable firewalld
#临时关闭selinux
setenforce 0
#永久修改selinux配置文件里的内容
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
防火墙看需要,选择是否关闭。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#设置MySQL开机启动
chkconfig mysqld on
#启动MySQL
service mysqld start
#从保存的临时密码文件里,截取出临时密码
temp_pwd=$(cat /root/temp_password.txt |tail -1|awk '{print $11}')
#给MySQL设置密码
mysql -uroot -p$temp_pwd --connect-expired-password -e "set password='xxxxxxxxxx'"
链接:http://blog.csdn.net/xyang81/article/details/51792144