Centos7+MySQL8.0安装过程+设置无密码登录+Navicat远程连接

本文从以下几个方面来展示linux上mysql安装及使用的过程,mysql其它版本也可借鉴:

  • MySQL yum源安装
  • 安装后,首次登录mysql以及密码配置
  • 远程登录问题(Navicat为例)

一、CentOS7+MySQL8.0,yum源安装

1.安装mysql前应卸载原有mysql(没有请忽略)

1.1找出原有mysql安装目录

同时卸载centos7自带的MariaDB数据库
rpm -qa | grep mysql
 
  
  

1.2依次删除上述文件


 
  
  
  1. yum remove mysql-community-libs- 8. 0. 17- 1.el 7.x 86_ 64
  2. yum remove mysql 80-community-release-el 7- 3.noarch
  3. yum remove mysql-community-common- 8. 0. 17- 1.el 7.x 86_ 64
  4. yum remove mysql-community-client- 8. 0. 17- 1.el 7.x 86_ 64
  5. yum remove mysql-community-libs-compat- 8. 0. 17- 1.el 7.x 86_ 64
  6. yum remove mysql-community-server- 8. 0. 17- 1.el 7.x 86_ 64

1.3删除mysl配置文件


 
  
  
  1. rm -rf /var/ lib/mysql
  2. rm /etc/my.cnf
  3. rm -rf /usr/share/mysql- 8.0

2.yum源安装mysql8.0

2.1下载repo源

这里提供一个下载源:https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

可从mysql官网上获取到repo源

mysql官方yum repo源

2.2将repo源传到centos虚拟机上

我这里使用xftp社区版,将.rpm文件传输到虚拟机上,可使用各类软件传输

2.3yum安装repo

yum install mysql80-community-release-el7-3.noarch.rpm
 
  
  

安装完毕后,进入/etc/yum.repos.d,可以看到刚加入的repo

完毕后,更新yum缓存


 
  
  
  1. yum clean all
  2. yum makecache

2.4yum安装mysql

2.4.1修改安装版本(默认最高版本)

因为官网最新的repo源中,包括了mysql的许多版本,可以通过cat /etc/yum.repos.d/mysql-community.repo ,修改各版本的enabled的值来确定安装哪个版本

cat /etc/yum.repos.d/mysql-community.repo
 
  
  

上图可看到,5.6和5.7的版本,enabled值为0,为不安装;8.0及其它工具,enabled值为1,为安装。默认安装最高版本,可以不修改

2.4.2执行安装命令

yum install mysql-community-server
 
  
  

可能出现的问题:

由于网络问题,可能会出现缺少依赖的问题

Delta RPMs disabled because /usr/bin/applydeltarpm not installed
 
  
  

这时只需要安装对应缺少的依赖即可

yum -y install deltarpm
 
  
  

另外,因为网络环境差,网络速度慢,与mysql官方源连接慢等原因,安装过程中,可能会出现中断等问题,多次执行yum install,直到安装完毕即可。

二、登录mysql以及修改密码

1.启动mysql服务

1.1开启mysql服务

systemctl start mysqld
 
  
  

1.2设置mysql服务开机自启


 
  
  
  1. systemctl enable mysqld
  2. systemctl daemon-reload

1.3查看mysql服务状态

systemctl status mysqld
 
  
  

active(running)即为服务已开启

2.查看mysql初始登录密码

mysql8.0安装时,已经分配了默认初始密码,需要手动查看

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

3.修改mysql登录密码

注意:官方源中安装的mysql默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误

本文不推荐修改默认的密码安全策略,给出两种修改密码的方式。

3.1进入数据库中修改root用户密码


 
  
  
  1. mysql -uroot -p
  2. Enter password: #输入密码,密码为查看的初始密码
  3. use mysql
  4. ALTER user 'root'@ 'localhost' IDENTIFIED BY 'Pwd@123'

 

3.2通过mysql自带的修改密码脚本进行修改

直接输入

/usr/bin/mysql_secure_installation  #修改密码的脚本
 
  
  

具体过程为,先输入初始密码,再输入新密码,可交互性高

注意,输入新密码后,会出现几个问句

  • Remove anonymous users?是否移除默认用户,建议no
  • Disallow root login remotely?是否不允许root用户远程连接,想要远程连接,必须no
  • Reload privilege tables now?是否现在加载表,建议yes

4.登录mysql

现在可通过

mysql -uroot -p
 
  
  

输入密码登录到mysql了

三、远程登录

1.修改root用户的host

首先登录mysql数据库,并切换到mysql库

use mysql
 
  
  

再查看root用户的host属性

select host,user from user;
 
  
  

root用户的host默认为localhost,需要改为%,即可允许远程登录数据库

update user set host='%' where user='root';
 
  
  

修改完成后,使用以下命令,使修改有效

flush privileges;
 
  
  

2.使用Navicat登录

在使用 Navicat for Mysql连接mysql 8.0时会报如下错误:

Authentication plugin 'caching_sha2_password' cannot be loaded: 
 
  
  

这是由于navicat密码加密方式为caching_sha2_password,而mysql默认加密格式为mysql_native_password 

只需修改root用户密码加密方式与navicat相同即可

执行命令

update user set plugin='mysql_native_password' where user='root';
 
  
  
flush privileges;
 
  
  

3.出现的问题

因为已经改变了root用户密码的加密方式,导致mysql不能正确解密原先设置的密码,导致密码失效,无法登陆到mysql

下面介绍一种,无密码登录mysql,及忘记密码后,修改密码的方法

3.1修改配置文件,跳过权限验证

进入 vi /etc/my.cnf,在[mysqld]中,添加一行 skip-grant-tables

保存退出后,重启mysql服务

systemctl restart mysqld
 
  
  

此时mysql数据库,可以进行无密码登录

3.2无密码登录mysql

先把密码设置为空


 
  
  
  1. mysql -uroot -p
  2. Enter password: #输入密码,此时密码为空,可直接Enter
  3. use mysql
  4. update user set authentication_string= '' where user= 'root';

3.3修改配置文件,删除 skip-grant-tables

删除第一步中添加的代码

3.4执行脚本重新修改密码

直接输入

/usr/bin/mysql_secure_installation  #修改密码的脚本
 
  
  

具体过程为,先输入初始密码,再输入新密码,可交互性高

注意,输入新密码后,会出现几个问句

  • Remove anonymous users?是否移除默认用户,建议no
  • Disallow root login remotely?是否不允许root用户远程连接,想要远程连接,必须no
  • Reload privilege tables now?是否现在加载表,建议yes

此时,可用新更改的密码登录mysql

Navicat与mysql密码加密方式相同,也有了正确的密码,root用户也可以被远程访问,Navicat连接数据库成功

注意:使用其它软件,没有密码加密方式不同的问题,比如sqlyog与mysql加密方式相同,sqlyog可能会出现编码问题,本帖不做叙述。

猜你喜欢

转载自blog.csdn.net/qq_43050077/article/details/107981679