MySQL8 安装后的简单配置教程:主要解决navicat等客户端登陆报错问题

由于官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能!所以今天就来体验一下,结果遇到了一些小问题,不过已经都解决了。

 

一、navicat等客户端登陆报错的原因

使用mysql,多数我们还是喜欢用可视化的客户端登陆管理的,个人比较喜欢用navicat。

一般装好服务器以后,习惯建一个远程的登陆帐号,在mysql8服务器上,用老方法创建的帐号,可以用mysql自己命令行正常登入,但是用navicat等软件登入却会提示如下错误。

1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
1251 - 客户端不支持服务器请求的身份验证协议; 考虑升级MySQL客户端

1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

 

原因是MySQL8的新特性,MySQL8默认使用 caching_sha2_password 身份验证机制。旧客户端不支持这种验证,当然就无法登入了。

 

所以解决办法也很简单,只需要我们在服务器上用旧的认证机制(mysql_native_password)设置密码就可以了。旧模式不是MySQL8默认模式,所以需要在创建用户或者修改密码时,明确指定为mysql_native_password模式。

 

1、首先我们试验下,用默认模式创建用户,

执行SQL:

ALTER USER 'root'@'%' IDENTIFIED BY 'aaabbb'; 

创建的记录是这样的:

 caching_sha2_password

这种情况下,客户端登入不会成功!

 

2、如果在创建/或者修改命令中 用WITH mysql_native_password 指明密码模式

例如SQL语句:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'aaabbb';

执行后的用户记录如下,可见plugin被设置为了mysql_native_password

mysql_native_password

 

3、此时再次测试,客户端就可以正常登入了。

navicat mysql8连接成功

 

二、完整的创建一个远程管理员帐号

 

1、创建一个可以远程登陆的root用户

CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';

注意@后面“%”允许远程登入,WITH mysql_native_password 修饰允许旧模式的客户端登入!

 

2、为账户开放权限

grant all privileges on *.* to root@'%';
flush privileges;

 

三、创建一个普通用户并为其分配一个数据库

这是开发中比较常见的需求,即给特定用户指定数据库内部的全部权限

 

1、添加一般账户

CREATE USER '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码';

 

2、创建新数据库

CREATE DATABASE IF NOT EXISTS 数据库名;

或者干脆

CREATE DATABASE 数据库名;

 

以前常常还要指定默认utf8字符集,现在MySQL 8.0的默认字符集是utf8mb4,所以默认即可。

默认生成的数据库字符集是这样的,如下图:MySQL 8.0的默认字符集是utf8mb4

 

3、新账户授权新数据库

grant all privileges on 数据库名.* to 用户名@'%';

为方便常常用户名和数据库名设为相同以便管理。

 

四、其他常用的MySQL语句

平时配置数据库少,很多命令不算熟悉,所以罗列起来,用的时候复制粘贴加修改是最方便的了!

1、创建用户(WITH mysql_native_password 是可选的,为了适应客户端兼容性)
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
2、设置/修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
alter user 'yzd'@'%' identified by 'aaa';

3、清除密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
UPDATE user SET authentication_string='' WHERE user='root';

4、删除用户
drop user 用户名@ localhost;
Delete FROM mysql.user Where User="用户名" and Host=”localhost”;

5、分配权限
grant all privileges on *.* to root@'%';

6、刷新权限
flush privileges;

7、创建数据库
CREATE DATABASE IF NOT EXISTS yzd DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

8、查询数据库列表
show databases;

9、查询数据表列表
show tables;

10、查询用户列表
select host,user,plugin,authentication_string from mysql.user;

11、查询当前用户名
select user();

12、查询当前用户权限
show grants;
    A+
发布日期:2018年08月05日 22:41:24  所属分类:MySQL
最后更新时间:2018-08-05 22:41:24
付杰
  • ¥ 159.0元
  • 市场价:499.0元
  • ¥ 499.0元
  • 市场价:499.0元
  • ¥ 68.0元
  • 市场价:168.0元
  • ¥ 98.0元
  • 市场价:198.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  0   博主  0

  1. 头像 webkv 1

    一直用的 mariadb,10.3.9的速度要快过 mysql8.0.12,感觉8.0之后引擎不同,以后会渐渐变成两个分支并且无法再通用。