(如果想直接看如何远程连接数据库请跳过开头部分)

首先先做开始前的准备,顺便复习一下基础的sql代码;

对于创建新数据库

首先先用root用户进入数据库

mysql -uroot -p

然后输入密码进入后输入

use msql;

show databases;

可以发现目前数据库目前有这些数据库

那我们再开个数据库来供我们学习使用

接下开始创建新的数据库

create databases student;

创建成功之后输入show databases;

时候可以发现我们刚刚创建的数据库已经出现了。

然后接下来再开一个新的用户来进行授权

输入create user 用户名 identified by '密码';

这里用一个名为zhang的用户来示范,并设置密码为123456;

然后接下里进行授权

grant 权限 on 数据库to '用户名'@'主机名';

这里输入的是

grant all on student to 'zhang'@'%';

意思是授予在student这个数据库中所有的权限给zhang这个用户,主机名是任意(可以从任意的地方远程连接)

接下来我们用Navicat来进行连接

把主机地址和刚刚创建的用户名和密码输入

先测试一下看看能不能连得上

啊这.....

这里提示我们的客户端不支持服务器请求的身份验证协议;请考虑升级mysql客户端。

当然,这个时候解决办法肯定有升级这样办法。

但是我不想升级怎么办(叛逆)

其实只要知道原因就好办了,他说服务器不支持身份验证协议。

哦~~那就是说因为数据库升级之后,协议换了,所以没办法正确验证了。

那我们可以把数据库的身份验证协议手动换一下。

但这也有一个弊端,我只是想用一个账号连特定的数据库,就为了这个账号把整个数据库验证都换了有点大题小做。

那我们单独设置一下这个账号的验证方法。

alter user 'zhang'@'%' IDENTIFIED with mysql_native_password BY '123456';

把zhang这个账号的身份协议改为mysql_native_password 密码是123456

因为mysql8.0之后的加密方式更换成了caching_sha2_password

然而mysql8.0之前的加密方式为mysql_native_password

所以把这个账号单独改成使用mysql_native_password加密方式

然后重新设一下密码

alter user 'zhang'@'%' identified by '123456';

然后刷新一下

flush privileges;

然后再去连接测试一下

OK,这回看起来没问题了

成功远程连接上了。