Database - Navicat 首次连接 MySQL

首次安装MySQL后,通过Navicat进行连接MySQL遇到了一系列的问题,不过都顺利KO ~

画蛇添足

  • DataBase - MySQL下载、安装、配置
  • DataBase - 初次使用MySQL中遇到的一系列问题

正篇

        • 基础必备
        • 允许远程连接数据库
          • 改表法
          • 授权法
        • 远程连接身份验证
        • Navicat设置编码格式

基础必备

此处声明一些cmd内基础sql语句的操作与注意事项

  • 管理员身份运行cmd
  • 启动服务
net start mysql
  • 登录数据库
#之后输入之前设置过的密码即可
mysql -u root -p
  • 进入mysql数据库
use mysql
  • 查看user对应的host
select host, user from user;

允许远程连接数据库

远程连接MySQL数据库报错:is not allowed to connect to this MYSQL server的解决办法

改表法

PS:我用的这种解决的问题

在localhost登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,将"localhost"改称"%"

完整命令

#登录MySQL
mysql -u root -p
#查看已有数据库
show databases;
#进入mysql数据库
use mysql;
#修改用户的host
update user set host = '%' where user = 'root';
#检验是否修改成功
select host, user from user;

补充:

show databses; ~
Database - Navicat 首次连接 MySQL_第1张图片
select host, user from user; ~ 方便检验修改前后的host
Database - Navicat 首次连接 MySQL_第2张图片

授权法

场景:你想root使用mypassword从任何主机连接到mysql服务器的话

GRANT ALL PRIVILEGES ON *.* TO ‘root’@'%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
# 刷新MySQL的系统权限相关表
flush privileges;

场景:如果你想允许用户root从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.10.40.54' IDENTIFIED BY '123456' WITH GRANT OPTION;
# 刷新MySQL的系统权限相关表
flush privileges;

常见问题:在采用法二授权法之后,无法在本地登录mysql

1.授权

# 登录MySQL
mysql -u root -p
# 授权
grant all privileges on *.* to 'root'@'主机名' identified by '123456' with grant option; 
# 刷新权限
flush privileges; 

2.在本地使用ip地址登录

mysql -u root -p -h ip地址

远程连接身份验证

Authentication plugin 'caching_sha2_password

Navicat Premium 12连接MySQL数据库时出现Authentication plugin ‘caching_sha2_password’ cannot be loaded的错误

出现原因:

MySQL8 之前的版本中加密规则是mysql_native_password,而在MySQL8 之后,加密规则是caching_sha2_password,

解决方式:

  • 升级navicat驱动
  • 还原mysql用户登录密码加密规则为mysql_native_password.

主讲还原密码规则

完整命令

#登录MySQL
mysql -u root -p
#修改账户密码加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
#更新用户密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; 
#刷新权限并重置密码
FLUSH PRIVILEGES; 

核心命令

这里的%代表的是任意远端而非localhost,可以进入mysql表查询对应的user
Database - Navicat 首次连接 MySQL_第3张图片
扩展命令

#单独重置密码命令
alter user 'root'@'localhost' identified by '123456';

大功告成
Database - Navicat 首次连接 MySQL_第4张图片

Navicat设置编码格式

编辑连接 - 高级 (默认编码:自动)
Database - Navicat 首次连接 MySQL_第5张图片

你可能感兴趣的:(Database,后端,数据库,Navicat连接MySQL)