# Windows安装MySql服务的相关问题
MySql服务的安装小总结,以及服务安装成功,但是使用DOS命令时,无论输入什么命令,都会有报错提示"ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.";而且使用Navicat可能会遇见的"1251–Client does not support authentication protocol requested by server"这样的无法连接数据库等报错情况的处理方式.
Windows安装SQL服务两种下载方式:
第一种压缩安装包下载地址: https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-winx64.zip 点击即可开始下载;
第二种最新版本安装包下载方式: https://dev.mysql.com/downloads/mysql/ 如下所示;
下载完后,我们将 zip 包解压到自己想要存放的相应目录;
1.配置环境变量
根据保存路径找到相应的bin文件夹,然后配置环境变量(环境变量不会配置可以参考我的其它"环境变量设置"的博客教程);
2.启动MySql
接下来我们来启动下 MySQL 数据库:
以管理员身份打开 cmd 命令行工具,切换目录
(方法一) Windows+R,回车打开DOS命令框;然后切换至mysql压缩包解压后的bin文件夹下;
例如: cd C:\文件夹\mysql-8.0.11\bin
(方法二) 鼠标单击选中bin文件夹,按住Shift,再点击鼠标右键,直接选择”在此处打开命令窗口”,既可以直接DOS命令框切换到bin目录下;(推荐)
3.初始化数据库
初始化数据库的操作命令时:
mysqld --initialize –console
输入完成点击"回车"即可.
4.初始化执行完成,输出root用户原始密码
执行完成后,会输出 root 用户的初始默认密码,如:
2018-04-20T02:35:05.464644Z 5 [Note] [MY-010454] [Server]
A temporary password is generated for root@localhost: tToQCX
tToQCX
5.安装
输入以下安装命令:
mysqld install
6.注意(补充)
在 5.7版本需要初始化 data 目录:输入一下命令进行初始化,操作后可以看到mysql服务安装路径下多了一个data的文件目录.
mysqld --initialize-insecure
7.启动MySql服务
启动输入以下命令即可:
net start mysql
启动后成功提示:
8.DOS命令进入MySql数据库
当 MySQL 服务已经运行时, 我们可以通过 MySQL 自带的客户端工具登录到 MySQL 数据库中, 首先打开命令提示符, 输入以下格式的命名:
如果我们要登录本机的 MySQL 数据库,只需要输入以下命令即可:
mysql -u root -p
按回车确认, 如果安装正确且 MySQL 正在运行, 会得到以下响应:
Enter password:
若密码存在(“tToQCX
Welecome to the MySQL monitor...
的提示语。
然后命令提示符会一直以 mysq> 加一个闪烁的光标等待命令的输入, 输入 exit 或 quit 退出登录。
9.忘记密码,或者修改密码问题解决方案
9.1) 如果你安装完成后,使用安装过程随机生成的密码登录,执行命令都是失败的,都会给出如下提示
比如输入:
mysql> SELECT 1;
会有如下提示信息
ERROR 1820 (HY000): You must reset your password using ALTER USER
statement before executing this statement.
9.2) 出现这种问题,我的是因为我不知道当初设置的root密码,我想改密码为"root",所以还需要如下操作:
mysql> ALTER USER USER() IDENTIFIED BY 'root';
有此提示之后就可以用root密码进行登录了!!
9.3) 但是,当你在客户端Navicat,使用root用户(密码root)进行创建新的连接的时候会发现报错,报错信息如下
1251--Client does not support authentication protocol requested by server
此时还需要使用DOS命令进入数据库然后进行几步操作才可以
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
mysql> FLUSH PRIVILEGES;