发布于 

cenos8安装mysql5.7

安装Mysql5.7详细教程,注意细节~

1.获取安装包

1
wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

如果提示wget不能识别或者不存在

1
yum install -y wget

如果安装wget报错:repo ‘appstream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist
这是因为在CentOS8.0中默认不再支持ntp软件包,时间同步将由chrony来实现,像我这种习惯了ntp同步时间的,一时难以去适应chrony
如果仍然需要运行CentOS 8,你可以在/etc/yum.repos.d中更新一下源。使用vault.centos.org代替mirror.centos.org。

1
2
sudo sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
sudo sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*

如果出现报错:cenos8 Failed to set locale, defaulting to C.UTF-8

这里会有两种原因

系统没有安装对应的语言包
没有配置正确的语言环境
一般情况下都是第二种情况居多
首先使用 locale -a 查看已安装的语言包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[root@hecs-131104 data]# locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory
C
C.utf8
POSIX
en_AG
en_AU
en_AU.utf8
en_BW
en_BW.utf8
en_CA
en_CA.utf8
en_DK
en_DK.utf8
en_GB
en_GB.iso885915
en_GB.utf8
en_HK
en_HK.utf8
en_IE
en_IE.utf8
en_IE@euro
en_IL
en_IN
en_NG
en_NZ
en_NZ.utf8
en_PH
en_PH.utf8
en_SC.utf8
en_SG
en_SG.utf8
en_US
en_US.iso885915
en_US.utf8
en_ZA
en_ZA.utf8
en_ZM
en_ZW
en_ZW.utf8


这里有en_US.utf8,所以是第二种情况。执行以下命令即可

1
2
3
echo "export LC_ALL=en_US.UTF-8"  >>  /etc/profile
echo "export LC_CTYPE=en_US.UTF-8" >> /etc/profile
source /etc/profile

2.开始安装

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

看到下面这个场景:👇

,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjExNjQy,size_16,color_FFFFFF,t_70)

3.安装mysql-community-server

1
yum install mysql-community-server

如果出现下图的错误,请执行检查:

,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjExNjQy,size_16,color_FFFFFF,t_70)

检查mysql源是否安装成功:

1
yum repolist enabled | grep "mysql.*.community.*"
,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjExNjQy,size_16,color_FFFFFF,t_70)

如果有类似上图这些信息则表示成功的,如果没有,请重新执行第二步。
再依次执行下面两条语句:

1
2
yum module disable mysql
yum -y install mysql-community-server
,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjExNjQy,size_16,color_FFFFFF,t_70)
,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjExNjQy,size_16,color_FFFFFF,t_70)

这里有问题的可以执行下下面这个语句: (没问题的可以不执行)

1
2
3
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum clean packages
yum -y install mysql-community-server

如果安装过程出现mariadb冲突,可参考下面这篇文章解决:
https://blog.csdn.net/dietime1943/article/details/127636430

,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjExNjQy,size_16,color_FFFFFF,t_70)

报错:Error: Transaction test error: file /etc/my.cnf from install of mysql-community-server
问题描述
在安装MySQL过程中出现错误 file /etc/my.cnf from install of mysql-community-server-xxx conflicts with file from package mariadb-connector-c-config-xxx.noarch提示。

具体错误信息如下:

1
2
3
4
5
6
7
8
9
Total                                                                                                                                                               588 kB/s | 1.4 MB     00:02
Running transaction check
Transaction check succeeded.
Running transaction test
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'yum clean packages'.
Error: Transaction test error:
file /etc/my.cnf from install of mysql-community-server-8.0.15-1.el7.x86_64 conflicts with file from package mariadb-connector-c-config-3.1.11-2.el8_3.noarch

原因分析
从错误信息中看,是冲突了,因为错误信息中有写 conflicts with file from package,但是这是一个全新的Linux8,正常没有安装过MySQL也没有安装过Mariadb,所以猜测是该Linux机器内嵌集成了该Mariadb包,造成冲突。

解决办法
查看本机被内嵌的Mariadb

1
rpm -qa | grep mariadb

可以看到执行查找的时候,在系统中有内嵌两个mariadb包

,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjExNjQy,size_16,color_FFFFFF,t_70)

使用rpm -e –nodeps package将内嵌集成的Mariadb卸载掉

1
2
rpm -e --nodeps mariadb-connector-c-config-3.1.11-2.el8_3.noarch
rpm -e --nodeps mariadb-connector-c-3.1.11-2.el8_3.x86_64

执行卸载如图所示:

,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjExNjQy,size_16,color_FFFFFF,t_70)

卸载掉冲突的mariadb后,再次尝试安装mysql成功

其他解决办法(推荐用上面的)
该办法来源于评论区网友的解答:

直接sudo yum remove mariadb-common-3:10.3.9-9.p02.ky10.x86_64也是ok的,即运行命令:

1
sudo yum remove mariadb-common-3:10.3.9-9.p02.ky10.x86_64

; 4.启动MySQL

1
systemctl start mysqld.service

5.查看状态

1
2
3
4
systemctl status mysql.service
# 如果出现如下报错,请换成 service mysqld status 这条命令
Unit mysql.service could not be found.

看到类似下图表示成功:

,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjExNjQy,size_16,color_FFFFFF,t_70)

6.设置开机启动

1
2
systemctl enable mysqld
systemctl daemon-reload

7.查看开机启动状态

1
systemctl list-unit-files | grep mysqld

如下图,表示设置成功:

,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjExNjQy,size_16,color_FFFFFF,t_70)

8.获取初始密码

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

马赛克隐藏的地方就是你的初始密码:

,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjExNjQy,size_16,color_FFFFFF,t_70)

9.登录mysql修改密码,并开启远程访问

1
mysql -u root -p

输入密码后再输入

1
set password for 'root'@'localhost'=你的新密码
,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjExNjQy,size_16,color_FFFFFF,t_70)

设置新密码与远程访问:(默认密码需要强密码,大小写+数字+字符)

1
2
3
4
5
6
7
8
9
10
# 如果想要密码规则简单一点,可以修改两个全局参数(可以不用设置)
set global validate_password_policy=0;
set global validate_password_length=1;
# 设置新密码(需要大写、小写、数字、符号)
set password for 'root'@'localhost'='你的新密码';
# 设置远程访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的新密码' WITH GRANT OPTION;
# 刷新使配置生效
flush privileges;
# 注意最后的;不能去掉

退出mysql命令行

1
2
3
quit或者exit
或者
在MySQL命令行界面中,按下Ctrl + D键即可退出。这将关闭MySQL命令行界面并返回到操作系统的终端窗口
,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjExNjQy,size_16,color_FFFFFF,t_70)

到此,大功告成,记得去把 3306 端口的防火墙放开!