通过源码在Linux上安装MySQL5.7.23

说明:本安装教程的Linux环境为CentOS6.8,并且只适合在本机安装一个版本的mysql,如果需要安装多个版本的mysql,需要更改一些配置。


一、卸载旧版本的mysql相关内容

使用命令检查是否安装有MySQL Server:     rpm -qa | grep mysql

有的话通过下面的命令来卸载掉:
例如查到安装了mysql-libs-5.1.73-7.el6.x86_64

rpm -e mysql-libs   //普通删除模式
rpm -e --nodeps mysql-libs    // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

二、安装环境准备

安装编译代码需要的包
yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib libxml libgcrypt libtool bison

⒉下载mysql安装包
安装包的种类有很多,不同的安装包安装方法略有不同。比如编译好的二进制包,带boost库的安装包,不带boost库的安装包等。为了方便安装过程中不受boost依赖的影响,直接从官网下载mysql-boost-5.7.23.tar.gz版本。
通过源码在Linux上安装MySQL5.7.23_第1张图片

通过源码在Linux上安装MySQL5.7.23_第2张图片 这个是下载编译过的二进制包 通过源码在Linux上安装MySQL5.7.23_第3张图片 这个是下载没有编译过的包

 ⒊解压mysql-boost-5.7.23.tar.gz到你想存放的目录: tar xvf mysql-boost-5.7.23.tar.gz -C 目录

三、 编译并安装

⒈先 cd 到mysql刚才解压到的目录

⒉编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/opt/mysql-5.7.23/boost

说明:如果编译出错,没有通过,检测参数后重新运行配置,需要删除CMakeCache.txt文件
#make clean

#rm -f CMakeCache.txt

执行命令:make && make install
说明:这个安装时间很长(30分钟左右),耐心等待即可。

四、配置MySQL

设置权限

使用下面的命令查看是否有mysql用户及用户组:
cat /etc/passwd     //查看用户列表
cat /etc/group       //查看用户组列表

如果没有就创建:
groupadd mysql   //创建mysql组
useradd
-g mysql mysql   //创建属于mysql组的mysql用户
passwd mysql  //为mysql用户创建登录密码

修改/usr/local/mysql权限:chown -R mysql:mysql /usr/local/mysql

⒉初始化

执行初始化配置脚本,创建系统自带的数据库和表:
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

说明:此条语句执行时容易报错,成功至少要满足以下几个条件
/usr/local/mysql/data目录存在并且一定要为空目录,否则报错;
如果本机已经存在了其余的mysql,请确实/etc/my.cnf文件不存在,否则会按照/etc/my.cnf中的设置进行初始化,datadir会读取另一个mysql实例的路径,从而导致报错。遇到此情况,可以先将已经存在的mysql实例停止,然后将/etc/my.cnf文件剪切到此实例对应的datadir目录中,再启动此实例,然后重新执行初始化命令;
上面语句初始化成功后会在控制台打印临时管理员密码,如:...root@localhost: 2wp?fPp33/Hw,其中2wp?fPp33/Hw就是密码。

⒊将启动脚本做成服务(选做)

 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
 chkconfig mysql on  //设置服务自动启动

说明:刚安装好,需要手动启动一次。#cd /usr/local/mysql/support-files  #./mysql.server start

⒋配置PATH(选做)

#echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile   //把mysql的bin路径加入PATH
#source /etc/profile   //让PATH变量修改立即生效

⒌创建软链接(选做)

这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。
解决方法:创建软链接 ln -s /usr/local/mysql/bin/mysql /usr/bin

⒍远程连接配置(选做)
  ①为root添加远程连接的能力,连接账号为root,连接密码为 “root”(不包括双引号)
      mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";

  ② 开放3306端口号
      # vim /etc/sysconfig/iptables
      在打开的文件中,加入如下内容:

      # service iptables restart 

五、修改默认登录密码

MYSQL默认给分配了一个默认密码,但当自己在终端上使用默认密码登录的时候,总会提示一个授权失败的错误
通过源码在Linux上安装MySQL5.7.23_第4张图片

解决方法一:修改配置文件my-default.cnf

⒈打开配置文件my-default.cnf,然后在里面找到 [mysqld] 这一项,然后在该配置项下添加skip-grant-tables 这个配置,然后保存文件。
⒉重启mysql服务:service mysql restart
⒊接着就可以免密登录了:敲入 mysql -u root -p 命令然后回车,当需要输入密码时,直接按enter键,便可以不用密码登录到数据库当中。
⒋重置密码:
    use mysql;
    update user set authentication_string=password('password') where user='root';
    flush privileges;

   说明:执行sql语句的时候,如果出现ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement. 则需要先执行一下flush privileges.

⒌退出mysql:quit
⒍重启mysql服务: service mysql restart
⒎我们改完默认密码后,再次进入到之前的配置文件中,将我们跳过密码的那个配置行给删除掉,变为系统原先的配置。重启MySQL服务,下次再登录的时候便可以解决掉这个问题了。

解决方法二:进入mysql安全模式

官网说:从5.7.18开始不在二进制包中提供my-default.cnf文件。经过测试,在5.7.18版本中,使用tar.gz安装时,也就是压缩包解压出来安装这种,已经不再需要my.cnf文件也能正常运行。

先关掉Mysql服务:service mysqld stop
通过源码在Linux上安装MySQL5.7.23_第5张图片

进入mysql的安全模式后,键入图中圈起来的四行配置(必须逐行输入),输入完成后使用 ctrl+z 键结束输入 然后再终端中使用 mysql -u root -p 同样可以实现密码登录,另外此时密码也已经修改为了 pass ,下次的登录即可使用pass这个新密码了。

说明:下次登录的时候,可能遇到以下问题:
通过源码在Linux上安装MySQL5.7.23_第6张图片

只需要再次设置一下密码,下次就不会出现这样的问题了。

你可能感兴趣的:(Linux)