CentOS7.9 安装 MySQL5.7

CentOS 7上安装MySQL 5.7的实战指南

简介

在 CentOS 7 上面安装 MySQL5.7 经历了一点小挫折,特此记录,给有需要的朋友做个参考。

我的云主机 CentOS 版本

> lsb_release -a

LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.9.2009 (Core)
Release:	7.9.2009
Codename:	Core

安装 MySQL

因为现有工程的各种缘故,我需要在云主机上面安装 MySQL5.7 版本。

在网上找了挺多安装方法但总是事与愿违,会出现各种各样的问题,还好在 MySQL 官方文档 找到了解决方案。所以说遇到问题还是要到官网去找方案。

如果你已经使用 root 身份登录了主机,在下面的步骤中可以不使用 sudo

1、Adding the Yum Repository

sudo yum localinstall mysql57-community-release-el7-11.noarch.rpm

如果出现类似 Failed to set locale, defaulting to C 这样的错误,说明该源无法找到,可以换中方式:

yum localinstall mysql57-community-release-el7.rpm

也可以在 http://repo.mysql.com/ 找相关的源。

2、Selecting a Release Series

执行如下命令前,记得安装 yum -y install yum-utils

yum repolist all | grep mysql

sudo yum-config-manager --enable mysql57-community

yum repolist enabled | grep mysql

3、Install

sudo yum install mysql-community-server

注意:如果你是 CentOS8,还需要在执行此步骤操作前,需要执行如下命令:

sudo yum module disable mysql

在安装过程中,可能会出现下面的错误(此时 MySQL 并没有安装成功)

Public key for mysql-community-libs-compat-5.7.38-1.el7.x86_64.rpm is not installed

Failing package is: mysql-community-libs-compat-5.7.38-1.el7.x86_64

GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

需要升级一下 GPG 然后重新安装 MySQL,方式如下:

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

 yum install mysql-community-server

4、Start mysqld

sudo service mysqld start

下面给出安装 MySQL 成功后,默认的配置文件路径,方便后续使用。

  • 配置文件:/etc/my.cnf
  • 日志文件:/var/log/mysqld.log
  • 启动脚本:/usr/lib/systemd/system/mysqld.service
  • socket文件:/var/run/mysqld/mysqld.pid

使用 MySQL

经过上面简单 4 步就可以轻松的完成 MySQL 的安装,接下来我们开始使用它。

mysql -uroot -p

直接回车(Enter),提示如下错误:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

解决上述问题,需要先想办法登入 MySQL,然后再修改 root 用户的密码。

如何解决这个错误而进行登入呢?

MySQL 安装完成之后,生成的默认密码在 /var/log/mysqld.log 日志文件中,我们可以使用 grep 命令在日志中找到临时密码(temporary password)。

grep 'temporary password' /var/log/mysqld.log

可以看到临时密码信息:2022-04-30T04:40:47.234502Z 1 [Note] A temporary password is generated for root@localhost: Tq%y:sUnC7;d,用该密码登入 MySQL 即可。

MySQL 5.7 默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含大小写字母、数字和特殊符号,并且长度不能少于8位。如果设置的密码不符合规范和要求,进行对应的操作会提示类似密码不符合规范的错误。可以查看 MySQL官网密码详细策略 了解更多这方面的知识。

登入成功之后,修改 root 用户的密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

后续可以通过如下方式(update)修改 root 用户的密码:

update user set authentication_string=password('MyNewPass4!') where user='root';

flush privileges;

以上操作完成后,需要重启一下 MySQL 服务。

service mysqld restart

另外还有一种解决方案,就是修改 my.cnf 配置文件

sudo vim /etc/my.cnf

在 mysqld 下面新增 skip-grant-tables

[mysqld]
...

skip-grant-tables

同理,以上操作完成后需要重启一下 MySQL 服务。登入后再用上述方法设置 root 用户的密码即可。

修改默认编码

MySQL 的字符编码,可以通过下述方式查看

show variables like 'character%';

我们通过编辑 /etc/my.cnf 配置文件来改变默认编码,分别在对应的标签下面增加如下内容即可。

[mysqld]
character-set-server=utf8

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

需要重启一下 MySQL 服务。

service mysqld restart

增加用户

默认只允许 root 用户在本地(即本机上)登录,如果其它机器要连接或者访问 mysql,必须添加一个允许远程连接或者访问的帐户。

当然你也可以设置让 root 用户进行远程访问,但这样就很不安全,一般也不会这么做。

select host,user,authentication_string from user;
hostuserauthentication_string
localhostroot*88195A6507F4892C6CED9F6E30BA6C609AF5AFA7
localhostmysql.session*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE

下面新增一个允许远程连接的帐户 lisi,注意设置的密码要符合 MySQL 复杂度要求,否则设置会失败。

GRANT ALL PRIVILEGES ON *.* TO 'lisi'@'%' IDENTIFIED BY 'lisi2018!A' WITH GRANT OPTION;

flush privileges;

再次查看一下用户会发现多了 lisi 这个用户。

hostuserauthentication_string
localhostroot*88195A657F48920B6C609AF5AFA7
localhostmysql.session*THISISNOTDTHACANEUEDHERE
%lisi*862081A20407183D1DECD57D19Dx36411

给朋友的教程做个小推广,喜欢 AI 的朋友可以去看看。

朋友做了一个关于 人工智能的教程,教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!点 这里 可以跳转到教程,对人工智能感兴趣的同学可以了解一下。


祝大家五一节日快乐,生活幸福😊
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值