首先我们需要打开MySQL 命令行客户端,如图所示,点击【MySQL 8.0 command line client】;然后输入自己安装MySQL时设置的密码,登录客户端;接下来,我们先查看一下加密的方式,输入:show variables like ‘default_authentication_plugin’。
一、Mysql突然间所有数据库的表都消失了的原因
首先我们需要打开MySQL 命令行客户端,如图所示,点击【MySQL 8.0 command line client】;然后输入自己安装MySQL时设置的密码,登录客户端;接下来,我们先查看一下加密的方式,输入:show variables like ‘default_authentication_plugin’。
接下来,查看本地mysql用户的信息,
输入:select host,user,plugin from mysql.user;
回车,可以看到root账户的加密方式是caching_sha2_password;
但是Navicat不支持MySQL新版本的这种用户登录账户加密方式,所以下面我们要修改root账户的加密方式为【mysql_native_password】,如图所示,输入:ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘root’;
回车,即可修改成功,注意这里最后的root是你设置的root账户的密码,我设置的是“root”。
最后,我们再重新打开Navicat连接MySQL,就可以成功用root账户连接了。
总计:
1、打开MySQL 命令行客户端;
2、输入自己安装MySQL时设置的密码,登录客户端;
3、查看一下加密的方式;
4、查看本地mysql用户的信息;
5、修改root账户的加密方式为【mysql_native_password】;
6、重新打开Navicat连接MySQL即可。
延伸阅读:
二、为什么要持久化连接
这和 web 服务器的工作方式有关。web 服务器可以通过三种方法来利用 PHP 生成 web 页面。
名列前茅种方法是将 PHP 自以为 CGI“包装器”用作一个单独运行的语言解释器(CGI Wapper)。当以这种方法运行时,PHP 会为向 web 服务器的每个 PHP 页面请求创建并销毁 PHP 解释器的时候实例。由于其会随每个请求的结束而销毁,因此其获取的任何资源(例如指向 SQL 数据库服务器的链接)都会在销毁时关闭。在这种情况下,不会从使用持久连接中获得任何好处——因为根本不会持久。
第二,也是最流行的方法是把 PHP 用作多进程 web 服务器的一个模块,这种方法目前只适用于 Apache。多进程的服务器通常有一个父进程和一组子进程协调运行,子进程负责提供网页的工作。每当接收达到客户端提出请求时,该请求会传递给尚未给其它客户端提供服务的某个子进程。这也就是说当相同的客户端第二次向服务端发出请求时,它将有可能由与名列前茅次不同的某个子进程提供服务。在开启了一个持久连接后,所有请求 SQL 服务的后继页面都能够重用与 SQL 服务器建立的相同连接。
最后一种方法是将 PHP 用作多线程 web 服务器的插件。目前 PHP 支持 WSAPI 和 NSAPI(在 Windows 上),允许 PHP 作为 Netscape FastTrack(iPlanet)、Microsoft 的 Internet Information Server (IIS) 和 O’Reilly 的 WebSite Pro 等多线程服务器的插件使用。该行为与前面描述的多过程模型相同。