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

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

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

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

1.1找出原有mysql安装目录

rpm -qa | grep mysql

1.2依次删除上述文件

yum remove mysql-community-libs-8.0.17-1.el7.x86_64
yum remove mysql80-community-release-el7-3.noarch
yum remove mysql-community-common-8.0.17-1.el7.x86_64
yum remove mysql-community-client-8.0.17-1.el7.x86_64
yum remove mysql-community-libs-compat-8.0.17-1.el7.x86_64
yum remove mysql-community-server-8.0.17-1.el7.x86_64

1.3删除mysl配置文件

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

2.yum源安装mysql8.0

2.1下载repo源

可从mysql官网上获取到repo源

mysql官方yum repo源

centos7 取消开机登陆密码 centos7无密码登录_navicat

centos7 取消开机登陆密码 centos7无密码登录_navicat_02

centos7 取消开机登陆密码 centos7无密码登录_navicat_03

2.2将repo源传到centos虚拟机上

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

centos7 取消开机登陆密码 centos7无密码登录_centos7 取消开机登陆密码_04

2.3yum安装repo

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

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

centos7 取消开机登陆密码 centos7无密码登录_linux_05

完毕后,更新yum缓存

yum clean all
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

centos7 取消开机登陆密码 centos7无密码登录_centos7_06

上图可看到,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服务开机自启

systemctl enable mysqld
systemctl daemon-reload

1.3查看mysql服务状态

systemctl status mysqld

centos7 取消开机登陆密码 centos7无密码登录_centos7 取消开机登陆密码_07

active(running)即为服务已开启

2.查看mysql初始登录密码

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

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

centos7 取消开机登陆密码 centos7无密码登录_centos7 取消开机登陆密码_08

3.修改mysql登录密码

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

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

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

 

mysql -uroot -p
Enter password:#输入密码,密码为查看的初始密码
use mysql
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;

centos7 取消开机登陆密码 centos7无密码登录_linux_09

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

centos7 取消开机登陆密码 centos7无密码登录_navicat_10

保存退出后,重启mysql服务

systemctl restart mysqld

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

3.2无密码登录mysql

先把密码设置为空

mysql -uroot -p
Enter password:#输入密码,此时密码为空,可直接Enter
use mysql
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连接数据库成功

centos7 取消开机登陆密码 centos7无密码登录_mysql_11

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