MYSQL5.7的安裝(yum、二進制、編譯安裝)

我叫張賀,貪財好色。一名合格的LINUX運維工程師,專一於LINUX的學習和研究,曾負責某中型企業的網站運維工做,愛好佛學和跑步。 我的博客:https://www.cnblogs.com/yizhangheka 筆者微信:zhanghe15069028807mysql

[TOC]linux

1、環境說明

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

2、YUM安裝

##一、安裝MYSQL-YUM源 sql

##二、安裝說明數據庫

[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源關閉,有兩種方法。 一、 第一種方法vim

[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

二、 第二種方法安全

[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

三、安裝前的準備

先要考慮好數據庫應該存哪一個目錄,方便之後之後的遷移和備份,因此要修改/etc/my.cnf文件的datadir的參數,咱們安裝到/mysql/下。bash

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

四、安裝

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

五、啓動

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用戶的密碼,反之,沒有,咱們能夠跳過密碼驗證。

3、變動root密碼

兩種方法:一是記得本來的密碼,改爲新的密碼;二是不記得原來的密碼,強行更改密碼。運維

## 一、知道原始密碼
//第一種方式,先經過本來的密碼登陸進數據庫,使用`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; 
## 二、不知道原始密碼
//第二種方式,二是不記得原來的密碼,強行更改密碼。
[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的語法變成這樣了

## 三、`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';socket

//策略改成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)

4、BINARY-INSTALL

採⽤⼆進制免編譯⽅式安裝MYSQL,不須要複雜的編譯設置和編譯時間等待,解壓下載的軟件包,初始化便可完成MySQL的安裝和啓動。MYSQL二進制包下載地址

一、基礎環境準備

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

二、創建用戶與相應目錄

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

三、下載&解壓&軟連接

[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

四、初始化

//建立數據庫的文件目錄和數據目錄,並遞歸用戶受權
[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)

五、根據初始化的參數創建MYSQL配置文件

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

六、啓動服務

//二進制包裏面人家已經爲咱們準備好了啓動文件,咱們將之複製到`/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

七、鏈接

//默認`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"

5、YUM安裝和二進制安裝總結

一、YUM安裝總結

YUM安裝最是簡單不過了,只要yum install就能夠了,可是咱們並無這麼作,由於咱們的源用的是第三方源,用第三方源安裝不如直接用MYSQL官方源安全靠譜,因此咱們首先經過官網的提示更新了源,而後再安裝;默認的安裝位置是/etc/my.cnf指定的,因此咱們在yum以前先定義好到底安裝到什麼地方。

二、二進制安裝總結

二進制安裝無需yum,只要解壓而後初始化便可。一樣的,咱們在用二進制安裝以前先建立好運行的用戶,數據庫文件存放的位置,數據庫數據存放的位置,注意別忘記受權用戶對目錄的權限,而後,在初始化的時候告訴二進制文件運行它的用戶是誰,它的基礎目錄和它的數據目錄。 安裝好以後,默認不能用systemctl來管理,咱們能夠將啓動文件放到/etc/init.d/目錄下來管理,注意啓動文件也要修改一下,裏面的基本目錄和數據目錄可能與咱們的實際環境不符。 經過/etc/init.d/mysqld start啓動以後啓動的是服務端,咱們想要鏈接到服務端須要客戶端命令mysql,默認PATH變量下沒有,好在二進制文件裏面MYSQL官方給咱們準備好了,咱們只須要將目錄加入到PATH變量裏面便可。

三、在安裝過程當中的報錯總結

  • 不管是YUM安裝仍是二進制安裝,默認都給咱們設置好了密碼,YUM安裝的須要去日誌裏面找一找,二進制安裝的初始化時就直接顯示的。
  • 在跳過密碼重啓服務的時候出現了這麼一個錯誤
Starting MySQL... ERROR! 
The server quit without updating PID file

是由於我把skip-grant-talbes裏面的grant拼寫錯誤了。

6、技巧

當咱們進入一家新公司的時候,咱們能夠經過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
相關文章
相關標籤/搜索