zoukankan      html  css  js  c++  java
  • MYSQL5.7的安装(yum、二进制、编译安装)

    我叫张贺,贪财好色。一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛学和跑步。
    个人博客:https://www.cnblogs.com/yizhangheka
    笔者微信:zhanghe15069028807

    一、环境说明

    SYSTEMCTL HOSTNAME IPADDR DISCRIPTION
    CentOS Linux release 7.6.1810 (Core) mysql01 192.168.80.140 yum-install
    CentOS Linux release 7.6.1810 (Core) mysql02 192.168.80.141 binary-install
    CentOS Linux release 7.6.1810 (Core) mysql03 192.168.80.142 make-install

    二、YUM安装

    1、安装MYSQL-YUM源




    2、安装说明

    [root@mysql01 ~]# ll /etc/yum.repos.d/
    -rw-r--r-- 1 root root 2523 Jun 16  2018 CentOS-Base.repo
    -rw-r--r-- 1 root root  664 May 11  2018 epel.repo
    [root@mysql01 ~]# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    [root@mysql01 ~]# ll /etc/yum.repos.d/
    total 16
    -rw-r--r-- 1 root root 2523 Jun 16  2018 CentOS-Base.repo
    -rw-r--r-- 1 root root  664 May 11  2018 epel.repo
    -rw-r--r-- 1 root root 2076 Apr 25  2019 mysql-community.repo
    -rw-r--r-- 1 root root 2108 Apr 25  2019 mysql-community-source.repo
    [root@mysql01 ~]# yum repolist all | grep mysql
    mysql55-community/x86_64           MySQL 5.5 Community Server    disabled
    mysql55-community-source           MySQL 5.5 Community Server -  disabled
    mysql56-community/x86_64           MySQL 5.6 Community Server    disabled
    mysql56-community-source           MySQL 5.6 Community Server -  disabled
    mysql57-community/x86_64           MySQL 5.7 Community Server    disabled  #5.7版本处于关闭状态
    mysql57-community-source           MySQL 5.7 Community Server -  disabled
    mysql80-community/x86_64           MySQL 8.0 Community Server    enabled:  #8.0版本处于开启状态
    mysql80-community-source           MySQL 8.0 Community Server -  disabled
    

    因为我们的目前是要安装5.7版本,而非8.0版本,所以,我们要将5.7版本的yum源打开,而将8.0版本的yum源关闭,有两种方法。
    1、 第一种方法

    [root@mysql01 ~]# yum-config-manager --enable mysql57-community
    [root@mysql01 ~]# yum-config-manager --disable mysql80-community
    [root@mysql01 ~]# yum repolist all | grep mysql
    mysql55-community/x86_64           MySQL 5.5 Community Server    disabled
    mysql55-community-source           MySQL 5.5 Community Server -  disabled
    mysql56-community/x86_64           MySQL 5.6 Community Server    disabled
    mysql56-community-source           MySQL 5.6 Community Server -  disabled
    mysql57-community/x86_64           MySQL 5.7 Community Server    enabled:    384
    mysql57-community-source           MySQL 5.7 Community Server -  disabled
    mysql80-community/x86_64           MySQL 8.0 Community Server    disabled
    mysql80-community-source           MySQL 8.0 Community Server -  disabled
    
    

    2、 第二种方法

    [root@mysql01 ~]# rpm -ql mysql80-community-release-el7
    /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
    /etc/yum.repos.d/mysql-community-source.repo
    /etc/yum.repos.d/mysql-community.repo
    [root@mysql01 ~]# vim /etc/yum.repos.d/mysql-community.repo
    [mysql57-community]
    name=MySQL 5.7 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
    enabled=1   #5.7版本默认关闭
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
    [mysql80-community]
    name=MySQL 8.0 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
    enabled=0   #8.0版本默认开启
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
    

    3、安装前的准备

    先要考虑好数据库应该存哪个目录,方便以后以后的迁移和备份,所以要修改/etc/my.cnf文件的datadir的参数,我们安装到/mysql/下。

    [root@mysql01 ~]# mkdir /mysql
    [root@mysql01 ~]# cat /etc/my.cnf
    [mysqld]
    datadir=/mysql
    socket=/var/lib/mysql/mysql.sock
    

    4、安装

    [root@mysql01 ~]# yum -y install mysql-community-server
    [root@mysql01 ~]# systemctl start mysqld
    [root@mysql01 ~]# systemctl enable mysqld
    

    5、启动

    yum安装已经初始化完成,密码也已经设置完成,我们在第一次启动失败之后去错误日志里面找到即可,如下所示:

    [root@mysql01 ~]# systemctl restart mysqld
    [root@mysql01 ~]# mysql -uroot
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
    [root@mysql01 ~]# grep 'password' /var/log/mysql.log    #如果系统是第一次安装的话,会过滤出root用户的密码,反之,没有,我们可以跳过密码验证。
    

    三、变更root密码

    两种方法:一是记得原本的密码,改成新的密码;二是不记得原来的密码,强行更改密码。

    ## 1、知道原始密码
    //第一种方式,先通过原本的密码登录进数据库,使用`update`命令更改`mysql.user`表的字段;
    [root@mysql01 ~]# mysql -uroot -p'cba-123';   #原密码
    mysql> update mysql.user set authentication_string=password('abc-123') where user='root';  #新密码
    mysql>FLUSH PRIVILEGES; 
    ## 2、不知道原始密码
    //第二种方式,二是不记得原来的密码,强行更改密码。
    [root@mysql01 ~]# vim /etc/my.cnf
    [mysqld]
    skip-grant-tables
    [root@mysql01 ~]#systemctl restart mysqld
    [root@mysql01 ~]# mysql 
    mysql> update mysql.user set authentication_string=password('abc-123') where user='root';  #新密码
    mysql>FLUSH PRIVILEGES;  #退出后,再删除`skip-garnt-talbes`参数,重启数据库,即可通过新密码登录。
    update user set authentication_string='' where user='root'; #8.0的语法变成这样了
    
    ## 3、`mariadb`变量密码的方式
    更改`mysql.user`表的方式与mysql相同,但是密码字段不同,提前用`desc`查看一下即可。
    mysqladmin是通用的,如果是mariadb刚安装启动,没有设置密码,就用`mysql password cba-123`设置密码。
    如果是更改密码的话,就用这个`mysqladmin -u root -poldpassword password 'newpassword'`
    

    有时候安装完成之后会出现这样的提示:You must reset your password using ALTER USER statement before executing
    ALTER USER USER() IDENTIFIED BY 'cba-123';

    //策略改为LOW之后,仅检查密码的长度,默认是8位
    mysql> set global validate_password_policy=LOW;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> ALTER USER USER() IDENTIFIED BY 'cba-123@';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> SHOW VARIABLES LIKE 'validate_password%';
    +--------------------------------------+-------+
    | Variable_name                        | Value |
    +--------------------------------------+-------+
    | validate_password_check_user_name    | OFF   |
    | validate_password_dictionary_file    |       |
    | validate_password_length             | 8     |
    | validate_password_mixed_case_count   | 1     |
    | validate_password_number_count       | 1     |
    | validate_password_policy             | LOW   |
    | validate_password_special_char_count | 1     |
    +--------------------------------------+-------+
    7 rows in set (0.00 sec)
    

    四、BINARY-INSTALL

    采⽤⼆进制免编译⽅式安装MYSQL,不需要复杂的编译设置和编译时间等待,解压下载的软件包,初始化即可完成MySQL的安装和启动。MYSQL二进制包下载地址

    1、基础环境准备

    [root@mysql02 ~]# systemctl stop firewalld;
    [root@mysql02 ~]# systemctl disable firewalld;
    [root@mysql02 ~]# setenforce 0
    

    2、建立用户与相应目录

    [root@mysql02 ~]# groupadd mysql;
    [root@mysql02 ~]# useradd -r -g mysql -s /sbin/nologin mysql;
    [root@mysql02 ~]# mkdir /soft/src -p && cd /soft/src
    

    3、下载&解压&软链接

    [root@mysql02 src]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
    [root@mysql02 src]# tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz -C /soft/
    [root@mysql02 src]# ln -s /soft/mysql-5.7.28-linux-glibc2.12-x86_64/ /soft/mysql
    

    4、初始化

    //创建数据库的文件目录和数据目录,并递归用户授权
    [root@mysql02 ~]# mkdir /soft/mysql{mysql-file,data}
    [root@mysql02 ~]# chown -R mysql:mysql /soft/mysql
    //初始化数据库
    [root@mysql02 ~]# /soft/mysql/bin/mysqld --initialize 
    > --user=mysql --basedir=/soft/mysql    #初始时指定`mysql`的运行用户,基础目录和数据目录,出现密码表示成功。
    > --datadir=/soft/mysql/data
    2019-11-20T01:49:32.945198Z 1 [Note] A temporary password is generated for root@localhost: Pk>,vkLD,8S)
    

    5、根据初始化的参数建立MYSQL配置文件

    [root@mysql02 ~]# vim /etc/my.cnf
    [mysqld]
    datadir=/soft/mysql/data
    basedir=/soft/mysql
    

    6、启动服务

    //二进制包里面人家已经为我们准备好了启动文件,我们将之复制到`/etc/init.d`里面即可以使用chkconfig进行管理了。
    [root@mysql02 ~]# cp /soft/mysql/support-files/mysql.server /etc/init.d/mysqld
    [root@mysql02 ~]# chkconfig --add mysqld
    [root@mysql02 ~]# chkconfig mysqld on
    //修改启动文件里面的参数,就是修改数据库的基础目录和数据目录,默认的与我们的环境对不上。
    [root@mysql02 ~]# sed -i '/^basedir=/cbasedir=/soft/mysql' /etc/init.d/mysqld
    [root@mysql02 ~]# sed -i '/^datadir=/cdatadir=/soft/mysql/data' /etc/init.d/mysqld
    //启动数据库,比较慢
    [root@mysql02 ~]# /etc/init.d/mysqld start
    //检查
    [root@mysql02 ~]# ss -tnlp | grep 3306
    [root@mysql02 ~]# lsof -i :3306
    

    7、连接

    //默认`PATH`变量没有`mysql`*客户端*命令连接数据库,`mysql`客户端命令在二进制文件里面,我们只要将`mysql`的二进制文件路径加入`PATH`变量即可。
    [root@mysql02 ~]# mysql
    bash: mysql: command not found...
    [root@mysql02 ~]# echo "export PATH=$PATH:/soft/mysql/bin" >> /etc/profile
    [root@mysql02 ~]# source /etc/profile
    [root@mysql02 ~]# mysql -uroot -p"Pk>,vkLD,8S"
    

    五、YUM安装和二进制安装总结

    1、YUM安装总结

    YUM安装最是简单不过了,只要yum install就可以了,但是我们并没有这么做,因为我们的源用的是第三方源,用第三方源安装不如直接用MYSQL官方源安全靠谱,所以我们首先通过官网的提示更新了源,然后再安装;默认的安装位置是/etc/my.cnf指定的,所以我们在yum之前先定义好到底安装到什么地方。

    2、二进制安装总结

    二进制安装无需yum,只要解压然后初始化即可。同样的,我们在用二进制安装之前先创建好运行的用户,数据库文件存放的位置,数据库数据存放的位置,注意别忘记授权用户对目录的权限,然后,在初始化的时候告诉二进制文件运行它的用户是谁,它的基础目录和它的数据目录。
    安装好之后,默认不能用systemctl来管理,我们可以将启动文件放到/etc/init.d/目录下来管理,注意启动文件也要修改一下,里面的基本目录和数据目录可能与我们的实际环境不符。
    通过/etc/init.d/mysqld start启动之后启动的是服务端,我们想要连接到服务端需要客户端命令mysql,默认PATH变量下没有,好在二进制文件里面MYSQL官方给我们准备好了,我们只需要将目录加入到PATH变量里面即可。

    3、在安装过程中的报错总结

    • 无论是YUM安装还是二进制安装,默认都给我们设置好了密码,YUM安装的需要去日志里面找一找,二进制安装的初始化时就直接显示的。
    • 在跳过密码重启服务的时候出现了这么一个错误
    Starting MySQL... ERROR! 
    The server quit without updating PID file 
    

    是因为我把skip-grant-talbes里面的grant拼写错误了。

    六、技巧

    当我们进入一家新公司的时候,我们可以通过pa aux | grep mysql看到二进制安装mysql时用到的参数,通过这些参数我们可以看到安装环境了,便于我们快速熟悉工作。

    [root@mysql02 ~]# ps aux | grep mysql
    avahi      8330  1.1  0.0  62268  2280 ?        Ss   09:27   1:27 avahi-daemon: registering [mysql02-157.local]
    root      75548  0.0  0.0 113312  1612 pts/0    S    10:28   0:00 /bin/sh /soft/mysql/bin/mysqld_safe --datadir=/soft/mysql/data --pid-file=/soft/mysql/data/mysql02.pid
    mysql     75680  4.0  5.2 1187232 176204 pts/0  Sl   10:28   2:42 /soft/mysql/bin/mysqld --basedir=/soft/mysql --datadir=/soft/mysql/data --plugin-dir=/soft/mysql/lib/plugin --user=mysql --log-error=mysql02.err --pid-file=/soft/mysql/data/mysql02.pid
    
  • 相关阅读:
    DS博客作业03--树
    DS博客作业02--栈和队列
    DS博客作业01--线性表
    C语言博客作业05--指针
    C语言博客作业04--数组
    C语言博客作业03--函数
    DS博客作业05--查找
    DS博客作业04--图
    DS博客作业02--栈和队列
    C博客作业05-指针
  • 原文地址:https://www.cnblogs.com/yizhangheka/p/11890461.html
Copyright © 2011-2022 走看看