mysql5.7.17 centos6.4x86 source安装

Step1. Preparation

A. ) 官网下载源码包.

 [root@lnx src]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17.tar.gz --no-check-certificate


B. ) 下载一份boost1.59.0或更高版本。


C. ) 安装cmake,此版本mysql需要cmake工具作配置和编译。最好系统yum可以运作,yum install cmake。


Step2. 开始安装

A. )  解压boost1.59,解压mysql源码包。


B. )  进入mysql源码解压目录,创建一个shell文件,cmake.sh


cmake.sh内容, cmake后面跟的是一些基本和必要的参数配置,文件夹配置安装在本机/m01下,mysql的basedir装在INSTALL_PREFIX配置路径,数据文件装在DATADIR配置路径,配置文件放在DSYSCONFDIR配置路径,字符集utf8和校准字符集配置。with_boost参数要指明boost1.59解压目录的位置,编译时候要用到。mysql手册有详细说明。

#! /bin/bash
cmake . \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DSYSCONFDIR=/etc \
-DMYSQL_UNIX_ADDR=/m01/mysql.sock \
-DCMAKE_INSTALL_PREFIX=/m01/mysql \
-DMYSQL_DATADIR=/m01/data \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_BOOST=/usr/local/src/boost_1_59_0 \
-DMYSQL_USER=mysql



C. )  创建名为mysql的用户组和用户,修改basedir和datadir所有者到mysql,此用户不应做实际登陆只作为mysql的所有者用户,shell设置成 -s /sbin/nologin


D. )  执行cmake.sh

CMake Warning:
  Manually-specified variables were not used by the project:

    MYSQL_USER

-- Build files have been written to: /usr/local/src/mysql-5.7.17


E. )  执行gmake -j 3, 用3个并发做gmake动作也会更慢,机器要动不了了,cpu能更强一些就好了。

F.  )   执行make install。这个就比较快了。做完之后,mysql软件就装好了。但还没完需要初始化数据库。

G. )  进入basedir,是这样的。
[root@lnx mysql]# ll
total 56
drwxr-xr-x.  2 mysql mysql  4096 Apr  4 23:22 bin
-rw-r--r--.  1 mysql mysql 17987 Nov 28 21:32 COPYING
drwxr-xr-x.  2 mysql mysql  4096 Apr  4 23:00 docs
drwxr-xr-x.  3 mysql mysql  4096 Apr  4 23:00 include
drwxr-xr-x.  4 mysql mysql  4096 Apr  4 23:00 lib
drwxr-xr-x.  4 mysql mysql  4096 Apr  4 23:00 man
drwxr-xr-x. 10 mysql mysql  4096 Apr  4 23:00 mysql-test
-rw-r--r--.  1 mysql mysql  2478 Nov 28 21:32 README
drwxr-xr-x. 28 mysql mysql  4096 Apr  4 23:00 share
drwxr-xr-x.  2 mysql mysql  4096 Apr  4 23:00 support-files

进入support-files文件夹,把mysql.server cp到/etc/init.d/mysql,这样开启服务方便。
cp mysql.server /etc/init.d/mysql
然后把my-default.cnf拷贝到cmake参数中的配置路径里面.
cp my-default.cnf /etc/my.cnf #my.cnf是固定名称,服务脚本里面写死的,想要改的就去看看脚本一起改。
my.cnf要根据cmake时的参数做些修改,为接下来初始化数据库做入参文件,其实就是省点事儿,否则需要把入参文件里面的basedir和datadir显式作为初始化数据库的参数敲进去。顺便把basedir/bin加进$PATH,敲命令省事儿。


H. )  进入basedir/bin,用mysqld命令来初始化数据库,这个命令取代了过去的mysql_databae_initialize脚本,当然也需要一些参数。注意先检查一下datadir应是不存在的,如果存在会报错。
./mysqld --defaults-file=/etc/my.cnf --user=mysql --initialize
正确的话最后一行就是这个,生成了root初始随机密码,且默认过期。
[Note] A temporary password is generated for root@localhost: eU+gu%pgH9>s


I. )  启动mysql服务。
[root@lnx bin]# service mysql start
Starting MySQL.Logging to '/m01/data/lnx.vpcdomain.err'.
.[  OK  ]

J. )连接mysql数据库。
在这一步发生了失败,用root用户总是登陆不进去,本机用mysqladmin修改root密码也不行。(本机用mysqladmin需要向配置文件里面加[mysqladmin]的套接字配置先,否则会提示错误)。

[root@lnx bin]# mysql -uroot -peU+gu%pgH9>s
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

[root@lnx bin]# mysqladmin -u root -p password
Enter password:
mysqladmin: connect to server at 'localhost' failed
error: 'Your password has expired. To log in you must change it using a client that supports expired passwords.'

想不到为什么root登录不进去,最后的解决办法是用了--skip-grant-tables参数来启动mysql,然后用sql更新了root@localhost的密码和过期标志。
service mysql start --skip-grant-tables
mysql -uroot -p
mysql> update user set authentication_string=password('mysql'),password_expired='N' where user='root';

退出mysql命令,重启mysql服务。root可以登录了。
[root@lnx data]# mysql -uroot -pmysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.17 Source distribution

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


K. ) 源码安装很慢,还容易出问题,重在自定义配置。需要多研究配置。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值