CentOS7下源码编译安装MySQL5.6.4

CentOS7下源码编译安装MySQL5.6.4

写这篇博客的主要原因是:请看上一篇博客:CentOS7下更改MySQL5.6.4默认的数据存储位置。对,当初通过rpm安装的mysql5.6.4,一切都源于想修改默认的数据存储位置。在那个上面差点没修改成功,就想着通过源码编译安装试试,因为源码编译安装可以在编译前指定路径,因此就有了这篇博客。虽然最终也在(通过rpm安装的mysql5.6.4)上修改成功了,具体的修改方法,请看上篇博客:CentOS7下更改MySQL5.6.4默认的数据存储位置。但是还是想把通过源码编译安装的过程记录下来,一来方便自己日后用到查看,二来方便其他有需要的同学查看,可以避免在这个上面浪费过多时间。

一、去官网下载源码:MySQL5.6.4源码官方地址:
MySQL5.6.4官方地址

二、通过命令 tar xvf mysql-5.6.40.tar.gz 解压。
三、要源码编译的话,先安装gcc,命令为:

yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio
yum install libaio libaio-devel -y
yum install perl-Data-Dumper -y

四、安装完gcc后,进入到解压后的MySQL源码目录,我的是: cd /home/hc/下载/mysql-5.6.40 然后执行命令:

个人体会:关于这两个目录,建议不要放在/home/username/下(username代指你的用户名),因为经过我的测试这会为后面的配置带来巨大的权限问题,我甚至不得不把整个/home的权限全部给mysql,才能启动成功,否则就提示没有权限生成读写/home/username/mysql/……下的某个文件。

cmake -DCMAKE_INSTALL_PREFIX=/home/mysql -DMYSQL_DATADIR=/home/mysql/data -DSYSCONFDIR=/etc 
-DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 
-DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 
-DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all 
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

note:‘-’是有的,别忘记加了,‘-’前要有空格。

-DCMAKE_INSTALL_PREFIX 是源码编译后生成的文件放置的目录
-DMYSQL_DATADIR就是我们以后MySQL数据想放置的目录

五、编译完然后安装:

make && make install

静静的等待….等到MySQL安装完成。
六、进行一些配置,这也是坑最多的环节….
6.1 先新建一个mysql组,并在mysql组里建一个mysql用户:

groupadd mysql
useradd -g mysql -s /sbin/nologin mysql

可以通过下面的命令来查看新建用户有没有成功。

cat /etc/group | grep mysql
cat /etc/passwd | grep mysql

查看mysql用户是否存在

6.2 赋予权限,因为我们编译生成后的文件所在位置是/home/mysql,所以,通过如下命令把/home/mysql的权限赋给mysql:

chown -R mysql:mysql /home/mysql

查看一下:
目录权限

6.3 进入mysql目录下,对mysql数据库进行初始化:

./scripts/mysql_install_db --basedir=/home/mysql --datadir=/home/mysql/data --user=mysql

CentOS7下源码编译安装MySQL5.6.4_第1张图片

6.4 拷贝服务脚本到init.d目录:

cp support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on

6.5 然后启动mysql: service mysql start,不幸的事情发生了,如下图:
CentOS7下源码编译安装MySQL5.6.4_第2张图片

我们一步步来解决,根据提示,应该是 /var/log/mariadb/mariadb.log 这个文件不存在,那好,我们手动建一个并赋予权限:

mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/

然后 service mysql start 启动,悲剧再次发生:
mysql启动错误2

同样根据提示,手动建立文件:

mkdir /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql

这下总算可以了吧,我们 service mysql start 启动,尼玛,还是起不起立:
mysql启动错误3

去查看下日志: cat /var/log/mariadb/mariadb.log
mysql日志

去百度了一波,解决方案是,把 /etc/my.cnf中datadir的路径改为/home/mysql/data (我们自己设置的目录)。然后 service mysql start,perfect,一切正常:
mysql启动成功

确认一波,到底启动成功没:

ps -ef | grep mysql
netstat -an | grep 3306

CentOS7下源码编译安装MySQL5.6.4_第3张图片

接下来设置环境变量,方便在终端中进入数据库:

打开/etc/profile 加入 exprot PATH =$PATH:/home/mysql/bin

然后输入mysql进入到数据库,自己可以设置用户名密码什么的,接下来一系列操作,只是为了确认数据路径到底是否在我们想要的目录下:
CentOS7下源码编译安装MySQL5.6.4_第4张图片
CentOS7下源码编译安装MySQL5.6.4_第5张图片
CentOS7下源码编译安装MySQL5.6.4_第6张图片

以上就是整个源码编译安装的全过程,这几天被mysql这个问题搞得有点惨,特此记录下。



你可能感兴趣的:(linux,数据库)