本文使用yum安装mysql
linux版本为 centos 8
参考:
MySQL官网yum源
MySQL官网Linux-yum安装Mysql
CentOS 8 yum安装软件时,提示无法从AppStream下载
centos 7 安装 mysql8 以及遇到的问题的解决
navicat连接mysql报错1251的解决方法
如果在本文遇到困惑和问题,可参考以上文档和文章。
本文经过作者实践,可放心使用
我们使用yum安装MySQL,
官网
你可能发现了这不是MySQL8的吗,我想装其它版本怎么说?
后续操作表明:mysql80-community-release-el8-3.noarch.rpm只包含MySQL8,所以你们可以试试6和7
ok,就它了:mysql80-community-release-el8-3.noarch.rpm
yum install mysql80-community-release-el8-3.noarch.rpm
报错:
这是centos8的问题,小插曲,一起解决
这个问题的原因是:centos8官方已经停止提供服务,相应的yum源也已经移到归档源
比较有意思的是,阿里云的服务器的yum源好像改为了腾讯的
清理yum缓存
yum clean all
重建缓存
yum makecache
还是报同样的错!!!
查看CentOS-Base.repo
cat /etc/yum.repos.d/CentOS-Base.repo
复制过去:
[BaseOS]
name=Qcloud centos OS - $basearch
baseurl=http://mirrors.cloud.tencent.com/centos/$releasever/BaseOS/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.cloud.tencent.com/centos/RPM-GPG-KEY-CentOS-Official
打开CentOS-AppStream.repo,注释掉原有内容,并插入新内容
vim /etc/yum.repos.d/CentOS-AppStream.repo
复制进去:
[AppStream]
name=Qcloud centos AppStream - $basearch
baseurl=http://mirrors.cloud.tencent.com/centos/$releasever/AppStream/$basearch/os/
enabled=0
gpgcheck=1
gpgkey=http://mirrors.cloud.tencent.com/centos/RPM-GPG-KEY-CentOS-Official
重建缓存
yum makecache
yum install mysql80-community-release-el8-3.noarch.rpm
都y就行了
默认开启的是MySQL8
yum repolist all | grep mysql
…,mysql80-community-release-el8-3.noarch.rpm这个是只有MySQL8的
可通编辑配置,以禁用或启用某个版本
vim /etc/yum.repos.d/mysql-community.repo
修改enable即可,0代表禁用,1代表启用
如我这里:
大概就是这样玩的
下面这个命令可以查看你开启了哪些
yum repolist enabled | grep mysql
安装过程会询问你,一直y即可
yum install mysql-community-server
启动MySQL:
systemctl start mysqld
查看MySQL状态:
systemctl status mysqld
开机自启:
# 开机自启
systemctl enable mysqld
# 重新加载系统配置,使开机自启立马有效
systemctl daemon-reload
MySQL较大的变动就是,第一次安装会给root用户一个临时密码,我们需要拿到这个临时密码:
grep 'temporary password' /var/log/mysqld.log
还有一种查看默认密码的方式:
vim /var/log/mysqld.log
ok,拿到默认密码后,登录:
会提示你输入密码,将密码复制即可
mysql -u root -p
需要知道的是: mysql新的安全机制要求,mysql的密码必须包含英文大小写、数字以及特殊字符
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'
刷新:
flush privileges;
可以看到,root用户的host未localhost,这意味着root用户只能在本机连接数据库。
所以我们需要将他改为所有机器都能连:(或者指定为ip)
update user set host='%' where user='root';
因为:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password. 由于用的是破解版的navicat,所以只能用第二种方法解决了
修改密码,并且不对密码加密:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
修改完成,退出:
exit
服务器防火墙记得开放3306
为了写这篇博客,拿了一台服务器安装MySQL。写到这里时已经凌晨10分,两个小时吧。只是为了自己有一份博客,需要的时候有得看,也希望能帮到各位,晚安。
2022.5.11
由于之前gitee图床增加了防盗链导致很多博客图片失效。
此次更新,更换了图片地址