CentOS下安装MySQL5.7

本文介绍如何在CentOS7.9环境下安装MySQL5.7,并详细阐述安装步骤、配置过程及常见问题解决方法。

一、安装环境

Cent OS 7.9 + MySQL 5.7-39

二、安装前准备

(一)环境准备

如果曾经安装过MySQL,请使用rpm -qa | grep mysql查看是否有残留,如果有,则使用rpm -e --nodeps [-file-name]逐个删除

(二)安装包准备

可以直接从MySQL官网下载安装包,选择以下安装包

下载后上传到服务器,或者直接在下载页面,右键复制下载链接,使用wget命令下载到服务器上

若提示没有wget命令,可以直接使用yum命令安装

wgt https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.39-1.el7.x86_64.rpm-bundle.tar

下载完成后,查看下载的包

-rw-r--r--. 1 root root 556165120 10月  6 11:29 mysql-5.7.39-1.el7.x86_64.rpm-bundle.tar

先在当前目录下创建一个文件夹,以便解包时可以直接解包到里边

mkdir mysql-5.7.39

使用tar命令解包到当前文件夹

tar -xf mysql-5.7.39-1.el7.x86_64.rpm-bundle.tar -C ./mysql-5.7.39

进入mysql-5.7.39

cd mysql-5.7.39

解包后的文件

[root@Linux mysql-5.7.39]# ll
总用量 543140
-rw-r--r--. 1 7155 31415  29107248 6月  13 14:07 mysql-community-client-5.7.39-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415    318320 6月  13 14:07 mysql-community-common-5.7.39-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415   4383060 6月  13 14:07 mysql-community-devel-5.7.39-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415  48149356 6月  13 14:07 mysql-community-embedded-5.7.39-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415  23316500 6月  13 14:07 mysql-community-embedded-compat-5.7.39-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 133181836 6月  13 14:07 mysql-community-embedded-devel-5.7.39-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415   2717964 6月  13 14:07 mysql-community-libs-5.7.39-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415   1264480 6月  13 14:07 mysql-community-libs-compat-5.7.39-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 186717812 6月  13 14:08 mysql-community-server-5.7.39-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 126996412 6月  13 14:08 mysql-community-test-5.7.39-1.el7.x86_64.rpm

三、安装

解包后有10个prm包,其实这里边我们只用到了4个,分别是client、common、libs、server,需要按照顺序分别安装

1、安装顺序

按照以下顺序安装rpm包:

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

我在安装libs时,出现了以下的提示

[root@Linux mysql-5.7.39]# rpm -ih mysql-community-libs-5.7.39-1.el7.x86_64.rpm 
警告:mysql-community-libs-5.7.39-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY
错误:依赖检测失败:
	mysql-community-common(x86-64) >= 5.7.9 被 mysql-community-libs-5.7.39-1.el7.x86_64 需要
	mariadb-libs 被 mysql-community-libs-5.7.39-1.el7.x86_64 取代

这是因为有mariadb-libs残留,删除即可

先使用rpm -qa | grep mariadb-libs搜索,再使用rpm -e --nodeps删除

[root@Linux mysql-5.7.39]# rpm -qa | grep mariadb-libs
mariadb-libs-5.5.68-1.el7.x86_64
[root@Linux mysql-5.7.39]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

这时需要再安装一遍common,然后安装libs

安装server时缺少net-tools依赖,直接使用yum -install安装即可

yum install -y net-tools

安装完成后,使用 systemctl start mysqld.service启动MySQL,没有报错,就表示安装成功

四、配置

(一)配置默认编码

编辑/etc/my.cnf文件

在对应的位置添加以下内容
 

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

重启MySQL服务:systemctl restart mysqld

(二)[可选]绕过密码登录

在[mysqld]下添加skip-grant-tables

添加以上内容后,保存、退出。这时再登录,需要输入密码时直接回车就可以进入到MySQL中了

(三)获取初始密码

如果不想绕过密码登录,就需要输入密码登录。初始密码可以通过grep 'temporary password' /var/log/mysqld.log获取

此时,root@localhost:之后的内容就是初始密码,登录root用户,使用该密码就可以成功登录了

(四)修改默认密码

使用默认密码登录MySQL,这个时候进行任何操作都会有以下提示

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

这是因为我们用初始密码登录,需要修改密码后才能操作

根据提示,我们可以使用ALTER USER命令来修改当前用户的密码

ALTER USER root@localhost identified by '你的新密码';

1、临时修改密码安全策略

如果新密码过于简单,会出现以下提示

mysql> alter user root@localhost identified by '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这是因为新密码不符合安全策略导致的,这时候我们可以通过SHOW VARIABLES LIKE 'validate_password%';查看当前的密码策略

如果仍然出现"ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement."提示,就要先改密码再查看密码策略

我们先把密码改成符合安全策略的密码,如:"Root_root@123"

改过密码后,再查看当前的密码策略,如下:

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             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.01 sec)
MySQL密码安全策略说明
参数说明
validate_password_check_user_name用户名检测,检测是否重名(不常用)
validate_password_dictionary_file字典文件,启动后必须要满组所使用字典的规则才能满足密码的条件(不常用)
validate_password_length密码最短长度,如果数值小于4,则最短为4位,只有大于等于4时,位数才会生效
validate_password_mixed_case_count密码中英文字符大小写的个数,当密码策略是MEDIUM或以上时生效。
validate_password_number_count密码中至少含有的数字个数,当密码策略是MEDIUM或以上时生效。
validate_password_policy

密码强度等级检查,使用LOW、MEDIUM、STRONG表示,也可以用0、1、2表示

0:只检查密码长度

1、检查密码长度、数字、大小写、特殊字符

2、检查密码长度、数字、大小写、特殊字符、字典文件

validate_password_special_char_count密码中非英文数字等特殊字符的个数,当密码策略是MEDIUM或以上时生效。

由以上表格可以看出,我们只需要改validate_password_length和validate_password_policy两项的值即可

分别修改validate_password_length和validate_password_policy的值,validate_password_length不修改也可以

set global validate_password_length=6;
set global validate_password_policy=LOW;

这时我们再把密码修改为简单密码,就不会有提示了。

2、永久修改密码安全策略

以上修改的密码安全策略只是临时的,MySQL服务重启后就会恢复成默认值,若想永久保留以上的策略,就需要在my.cnf文件的[mysqld]下添加以下内容:

validate_password_policy=0
validate_password_length=0

添加后保存,重启MySQL,密码安全策略就不会恢复成默认了

(五)远程登录

MySQL安装完后,默认是只能在本地登录的,若想要实现远程登录,需要有以下2个条件:

1、开启3306端口

开启3306端口方法一:关闭防火墙,命令:systemctl stop firewalld.service,此时只是临时关闭了防火墙,若要永久关闭,还需要执行systemctl disable firewalld.service命令,来禁止防火墙开机自启。(systemctl enable firewalld开启防火墙自启)

开放3306端口方法二:单独打开端口。如果防火墙处于关闭状态,第二种方法直接忽略即可。

首先看一下都有哪些端口是开放的:临时开放的端口:firewall-cmd --list-ports永久开放的端口:firewall-cmd --list-ports --permanent

添加临时端口号:firewall-cmd --add-port=3306/tcp,添加永久端口号:firewall-cmd --add-port=3306/tcp --permanent

关闭临时端口号:firewall-cmd --remove-port=3306/tcp,关闭临时端口号:firewall-cmd --remove-port=3306/tcp --permanent

配置完成后,重启防火墙使配置生效

2、允许用户在其他IP上登录

在登录MySQL后,在MySQL库中有一张user表,表中的root用户就是我们登录的root帐号,此时root的host值是localhost,只需要把localhost改成 % 即可,%表示在所有的IP上都可以登录

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值