CentOS7.5 上使用 bundle 文件安裝 MySQL8.0 MySQL5.0

CentOS7.5 上使用 bundle 文件安裝 MySQL8.0 MySQL5.0

CentOS7.5 環境

[root@instance-fjii60o3 ~]# rpm -qi centos-release
Name        : centos-release
Version     : 7
Release     : 5.1804.el7.centos
Architecture: x86_64
Install Date: Wed 30 May 2018 07:38:02 PM CST
Group       : System Environment/Base
Size        : 40173
License     : GPLv2
Signature   : RSA/SHA256, Tue 01 May 2018 12:17:56 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : centos-release-7-5.1804.el7.centos.src.rpm
Build Date  : Sun 29 Apr 2018 12:35:55 AM CST
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
Summary     : CentOS Linux release file
Description :
CentOS Linux release files
[root@instance-fjii60o3 ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

下載 MySQL

https://dev.mysql.com/downloads/mysql/

rpm-bundle 資源束

MySQL8.0

# MySQL8.0 資源束
[root@instance-fjii60o3 develop]# tar -xvf mysqlpackage/mysql-8.0.13-1.el7.x86_64.rpm-bundle.tar 
mysql-community-client-8.0.13-1.el7.x86_64.rpm
mysql-community-embedded-compat-8.0.13-1.el7.x86_64.rpm
mysql-community-libs-8.0.13-1.el7.x86_64.rpm
mysql-community-server-8.0.13-1.el7.x86_64.rpm
mysql-community-common-8.0.13-1.el7.x86_64.rpm
mysql-community-devel-8.0.13-1.el7.x86_64.rpm
mysql-community-test-8.0.13-1.el7.x86_64.rpm
mysql-community-libs-compat-8.0.13-1.el7.x86_64.rpm

MySQL5.5

# 查看文件大小 -h human 以人可讀的方式顯示
[root@instance-fjii60o3 ~]# du -sh MySQL-5.5.62-1.el7.x86_64.rpm-bundle.tar 
166M	MySQL-5.5.62-1.el7.x86_64.rpm-bundle.tar
# MySQL5.5 資源束
[root@instance-fjii60o3 ~]# tar -xvf MySQL-5.5.62-1.el7.x86_64.rpm-bundle.tar -C develop/mysql5.5/
MySQL-devel-5.5.62-1.el7.x86_64.rpm
MySQL-embedded-5.5.62-1.el7.x86_64.rpm
MySQL-shared-5.5.62-1.el7.x86_64.rpm
MySQL-test-5.5.62-1.el7.x86_64.rpm
MySQL-server-5.5.62-1.el7.x86_64.rpm
MySQL-shared-compat-5.5.62-1.el7.x86_64.rpm
MySQL-client-5.5.62-1.el7.x86_64.rpm

使用 rpm 本地安裝 MySQL8.0

rpm 安裝缺乏依賴會報錯,因此安裝要按照指定的順序。mysql

rpm -ivh mysql-community-libs-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-common-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.13-1.el7.x86_64.rpm

使用 rpm 本地安裝 MySQL5.5

嘗試安裝,報錯 perl 。

[root@instance-fjii60o3 mysql5.5]# rpm -ivh *.rpm
warning: MySQL-client-5.5.62-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
	perl(Data::Dumper) is needed by MySQL-server-5.5.62-1.el7.x86_64
	perl(Data::Dumper) is needed by MySQL-test-5.5.62-1.el7.x86_64
方案:
	安裝 perl 和 自動配置 autoconf
# 安裝 perl
[root@instance-fjii60o3 mysql5.5]# yum install perl

# 安裝 autoconf 解決 perl(Data::Dumper) 問題
[root@instance-fjii60o3 mysql5.5]# yum -y install autoconf
Installed:
  autoconf.noarch 0:2.69-11.el7                                               
Dependency Installed:
  perl-Data-Dumper.x86_64 0:2.145-3.el7

按照指定順序進行安裝

# 安裝 autoconf
yum -y install autoconf
rpm -ivh MySQL-client-5.5.62-1.el7.x86_64.rpm
rpm -ivh MySQL-devel-5.5.62-1.el7.x86_64.rpm
rpm -ivh MySQL-server-5.5.62-1.el7.x86_64.rpm

啓動 bug

[root@instance-fjii60o3 mysql5.5]# systemctl start mysqld
Failed to start mysqld.service: Unit not found.
緣由:
	MySQL5.5 的服務名是 mysql 而不是 mysqld
[root@instance-fjii60o3 mysql5.5]# systemctl start mysql
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
緣由:
	MySQL8.0 卸載後沒有刪除相應數據目錄,有殘留。形成 MySQL5.5 安裝後出問題。徹底卸載乾淨後,從新安裝成功。
[root@instance-fjii60o3 mysql5.5]# mysqld
190804 10:38:36 [Note] mysqld (mysqld 5.5.62) starting as process 24055 ...
190804 10:38:36 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
[root@instance-fjii60o3 mysql5.5]# mysqld --verbose --help > a.txt
190804 10:47:41 [Note] mysqld (mysqld 5.5.62) starting as process 24203 ...
190804 10:47:41 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Table 'mysql.plugin' doesn't exist
190804 10:47:41 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

驗證安裝是否成功

# mysqld 和 mysql 查看版本號
[root@instance-fjii60o3 develop]# mysql --version
mysql  Ver 8.0.13 for Linux on x86_64 (MySQL Community Server - GPL)
[root@instance-fjii60o3 develop]# mysqld --version
/usr/sbin/mysqld  Ver 8.0.13 for Linux on x86_64 (MySQL Community Server - GPL)

啓動 關閉 重啓 查看 MySQL 服務

MySQL8.0 服務名爲 mysqld , MySQL5.5 的服務名爲 mysql 。linux

# 啓動 MySQL8.0 服務。MySQL8.0 服務名爲 mysqld , MySQL5.5 的服務名爲 mysql 。
[root@instance-fjii60o3 develop]# systemctl start mysqld
# 關閉 MySQL8.0 服務
[root@instance-fjii60o3 develop]# systemctl stop mysqld
# 重啓 MySQL8.0 服務
[root@instance-fjii60o3 develop]# systemctl restart mysqld
# 查看 MySQL8.0 服務
[root@instance-fjii60o3 develop]# systemctl status mysqld

# ps 查找 mysql 進程
[root@instance-fjii60o3 develop]# ps -aux | grep mysql
mysql    12991  3.4 18.1 1369508 371432 ?      Ssl  17:38   0:00 /usr/sbin/mysqld
root     13039  0.0  0.0 112708   980 pts/0    R+   17:38   0:00 grep --color=auto mysql

# netstat 查看 3306 端口
[root@instance-fjii60o3 develop]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name       tcp6       0      0 :::3306                 :::*                    LISTEN      12991/mysqld

徹底卸載 MySQL

[root@instance-fjii60o3 mysql5.5]# rpm -qa|grep -i mysql
MySQL-devel-5.5.62-1.el7.x86_64
MySQL-client-5.5.62-1.el7.x86_64
MySQL-server-5.5.62-1.el7.x86_64

[root@instance-fjii60o3 mysql5.5]# rpm -e MySQL-devel-5.5.62-1.el7.x86_64
[root@instance-fjii60o3 mysql5.5]# rpm -e MySQL-client-5.5.62-1.el7.x86_64
[root@instance-fjii60o3 mysql5.5]# rpm -e MySQL-server-5.5.62-1.el7.x86_64

[root@instance-fjii60o3 mysql5.5]# find / -name mysql
/usr/lib64/mysql
/etc/selinux/targeted/tmp/modules/100/mysql
/etc/selinux/targeted/active/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/run/lock/subsys/mysql

[root@instance-fjii60o3 mysql5.5]# rm -rf /usr/lib64/mysql /var/lib/mysql /run/lock/subsys/mysql /etc/selinux/targeted/tmp/modules/100/mysql /etc/selinux/targeted/active/modules/100/mysql

MySQL8.0 獲取臨時密碼,客戶端本地登陸,並修改密碼

MySQL8.0 臨時密碼文件 /var/log/mysqld.logsql

# 獲取臨時密碼
[root@instance-fjii60o3 develop]# grep 'temporary password' /var/log/mysqld.log
2019-08-03T09:38:05.811773Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: vwhK+YKXJ0=v

# 使用臨時密碼登陸 MySQL 客戶端
[root@instance-fjii60o3 develop]# mysql -uroot -pvwhK+YKXJ0=v
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8

# 修改密碼。注意:由於對密碼格式有限制,因此不符合規則的密碼會報錯。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root1234=';
Query OK, 0 rows affected (0.03 sec)

MySQL5.5 設置登陸密碼,客戶端本地登陸

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h instance-fjii60o3 password 'new-password

mysqladmin 修改登陸密碼,客戶端本地登陸

[root@instance-fjii60o3 mysql5.5]# /usr/bin/mysqladmin -u root password 'root'
[root@instance-fjii60o3 mysql5.5]# mysql -uroot -proot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.5.62 MySQL Community Server (GPL)

查看 MySQL8.0 初始配置

datadir=/var/lib/mysql/ 數據庫數據文件的存放位置

編寫 MySQL 配置文件

利用 mysqld 打印的幫助信息中,查看 MySQL 使用的配置文件。

[root@instance-fjii60o3 ~]# mysqld --verbose --help | grep -A 1 'Default options'
190804 14:32:05 [Note] mysqld (mysqld 5.5.62) starting as process 4698 ...
190804 14:32:05 [Note] Plugin 'FEDERATED' is disabled.
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

建立 /etc/my.cnf 配置文件

# 建立文件 /etc/my.cnf 並修改 MySQL 服務端口號
[mysqld]
port=3307

更詳細的參考 MySQL8.0 版手冊

# MySQL 8.0 版本參考手冊
4.2.4 Specifying Program Options # 選項配置方式。
5.1.1 Configuring the Server 
5.1.7 Server Command Options # 選項。
4.2.4 Specifying Program Options
There are several ways to specify options for MySQL programs:
• List the options on the command line following the program name. 
• List the options in an option file that the program reads when it starts. 
• List the options in environment variables (see Section 4.2.11, 「Setting Environment Variables」).
5.1.7 Server Command Options
When you start the mysqld server, you can specify program options using any of the methods described in Section 4.2.4。

mysqld reads options from the [mysqld] and [server] groups. 
mysqld_safe reads options from the [mysqld], [server], [mysqld_safe], and [safe_mysqld] groups. 
mysql.server reads options from the [mysqld] and [mysql.server] groups.

mysqld accepts many command options. For a brief summary, execute this command:
mysqld --help
To see the full list, use this command:
mysqld --verbose --help

外網鏈接 MySQL 服務

開放 3306 端口

# 持久化開放 3306 端口,須要防火牆從新加載
[root@instance-fjii60o3 develop]# firewall-cmd --add-port=3306/tcp --permanent
success
# 防火牆從新加載
[root@instance-fjii60o3 develop]# firewall-cmd --reload
success
# 查看開放的端口
[root@instance-fjii60o3 develop]# firewall-cmd --list-ports
80/tcp 8080/tcp 3306/tcp

建立 MySQL 網絡用戶並進行受權

# 建立 MySQL 網絡用戶。 % 表示任意網絡地址均可以訪問。
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'Root1234=';
Query OK, 0 rows affected (0.07 sec)

# 查詢 mysql.user 表,獲取用戶信息。
mysql> select host, user from mysql.user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |

# 授予所有權限。
mysql> grant all on *.* to 'root'@'%';
Query OK, 0 rows affected (0.04 sec)

外部主機鏈接 MySQL 服務

C:\Users\jie>mysql -h 106.12.196.253 -uroot -pRoot1234=
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.13 MySQL Community Server - GPL

MySQL8.0 認證插件

# 查看默認密碼認證插件
mysql> show variables like '%auth%';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| default_authentication_plugin | caching_sha2_password |
+-------------------------------+-----------------------+
1 row in set, 1 warning (0.00 sec)

# 查看可用的密碼認證插件
mysql> show plugins;
+----------------------------+----------+--------------------+---------+---------+
| Name                       | Status   | Type               | Library | License |
+----------------------------+----------+--------------------+---------+---------+
| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| sha256_password            | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| caching_sha2_password      | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |

# 修改指定用戶的密碼認證插件
mysql> alter user 'root'@'localhost' identified with caching_sha2_password by 'root';
Query OK, 0 rows affected (0.16 sec)

修改密碼規則

mysql之validate_password_policy https://blog.csdn.net/wltsysterm/article/details/79649484數據庫

validate_password插件是mysql5.6之後能夠引入的一個新密碼校驗插件(網友說的,同時還說要用這個插件至少要求mysql5.6.6以後的版本,沒啥重要的,就沒去驗證了),在mysql5.7以後會自動安裝的(這個是真的,我裝的5.7.21是這樣的)centos

validate_password_policy是隨着validate_password插件誕生而誕生的,換句話說若是沒有安裝validate_password插件,就不用看下面的內容了。網絡

md5 工具校驗下載的文件

# 利用 md5sum 工具生成文件的校驗碼和 MySQL 官網下載頁提供的校驗碼應該保持一致。
[root@instance-fjii60o3 ~]# md5sum develop/mysql80-community-release-el7-3.noarch.rpm
893b55d5d885df5c4d4cf7c4f2f6c153  develop/mysql80-community-release-el7-3.noarch.rpm

官網下載頁提供的 MD5: 893b55d5d885df5c4d4cf7c4f2f6c153

# 使用 md5sum 工具能夠爲任意文件生成校驗碼
[root@instance-fjii60o3 ~]# md5sum a.txt 
d41d8cd98f00b204e9800998ecf8427e  a.txt
相關文章
相關標籤/搜索