只介绍解压版的mysql安装方法:

    将文件解压之后可以将该文件夹改名,放到合适的位置(自行选择),这里我放在了E盘:

windows mysql安装及问题处理_mysql

之后配置环境变量:

我的电脑->属性->高级->环境变量

选择PATH,在其后面添加: 你的mysql bin文件夹的路径 (如:E:\mysql-5.7.17-win32\bin )

PATH=.......;E:\mysql-5.7.17-win32\bin (注意是追加,不是覆盖,添加时注意前方要有分号没有的话自己添加一个英文分号;

windows mysql安装及问题处理_重置_02

配置完环境变量之后先别忙着启动mysql,我们还需要修改一下配置文件,默认的配置文件是在E:\mysql-5.7.17-win32\my-default.ini,或者自己建立一个my.ini文件,

在其中修改或添加配置(如图): 

[mysqld] 

basedir=E:\mysql-5.7.17-win32(mysql所在目录) 

datadir=E:\mysql-5.7.17-win32\data (mysql所在目录\data)

windows mysql安装及问题处理_mysql_03

配置好之后选择将文件名改为 my.ini 或者复制一个副本改名为my.ini

windows mysql安装及问题处理_教程_04

以管理员身份运行cmd(一定要用管理员身份运行,不然权限不够),

输入:cd E:\mysql-5.7.17-win32\bin 进入mysql的bin文件夹

输入mysqld -install   安装mysql服务

安装成功后就要启动服务了,继续在cmd中输入:net start mysql,服务启动成功!

之后输入 mysql -u root -p 回车就登录了

出现的错误及解决:

Mysql 服务无法启动 服务没有报告任何错误

在执行 mysqld -install之后 运行mysqld  --initialize (标题问题所在,若没有init则不存在data目录,自然无法启动成功)

在安装mysql5.7版本时,经常会遇到mysql -u root -p直接回车登陆不上的情况,原因在于5.7版本在安装时自动给了一个随机密码,坑爹的是在init步骤的时候不像linux系统会给出命令行提示,需要手动在mysql目录下搜索*.err,以文本形式打开才能看到如下内容:

018-11-03 T15:15:10.033062Z 1 [Note] A temporary password is generated for root@localhost: >mso<k70mrWe

红色字母即为第一次的登陆密码。

mysql重置密码

重置 root 密码

在忘记 root 密码的情况下,可以进入 mysql 的安全模式,重置 root 密码。

1. 停止 MySQL 服务

打开命令提示符窗口,输入 net stop mysql 关闭 MySQL 服务。

C:\Users\Administrator>net stop mysql

MySQL57 服务正在停止..

MySQL57 服务已成功停止。

2. 切换到 bin 目录

在命令提示符窗口中,通过 cd 命令切换到 mysql 安装目录下的 bin 目录。

C:\Users\Administrator>E:

cd E:\mysql-5.7.17-win32\bin

C:\Program Files\MySQL\MySQL Server 5.7\bin>

3. 进入安全模式

在 bin 目录下输入 ​​mysqld --skip-grant-tables ​​,跳过权限检查启动 mysql。

如果你配置了 my.ini 文件,则需要将其引入: ​​mysqld --defaults-file="../my.ini" --skip-grant-tables​

[mysqld]

basedir = "C:\ProgramData\MySQL\MySQL Server 5.7"

datadir = "C:\ProgramData\MySQL\MySQL Server 5.7\Data"

4. 重置账户密码

打开另一个命令提示符窗口(别关闭安全模式窗口),同样切换到 mysql \ bin 目录,输入 mysql 跳过权限验证连接数据库。

C:\Program Files\MySQL\MySQL Server 5.7\bin>mysql

Server version: 5.7.16 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

↑ 也可以指定连接参数 mysql -u <用户名> -p <密码> -h <连接地址> -P <端口号> -D <数据库>

执行 update mysql.user set authentication_string="" where user="root"; 重置 root 用户的密码(5.7 之前为 password 字段)。


1

2

3

4

5

6

7

8

9

10

11

12



​mysql> update mysql.user set authentication_string="" where user="root";​

​Query OK, 1 row affected (0.00 sec)​

​mysql> select user,authentication_string from mysql.user\G​

​*************************** 1. row ***************************​

​user: root​

​authentication_string:​

​*************************** 2. row ***************************​

​user: mysql.sys​

​authentication_string: *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE​

​2 rows in set (0.00 sec)​


↑ root 用户的 authentication_string 字段已经被清空了

5. 刷新权限表

执行 flush privileges; 命令刷新权限表,密码已经重置完成,输入 quit 退出。


1

2

3

4



​mysql> flush privileges;​

​Query OK, 0 rows affected (0.02 sec)​

​mysql> quit​

​Bye​


关闭所有命令提示符窗口,通过任务管理器结束 mysqld.exe 进程。重启 MySQL 服务,之后就可以直接登录 root 账号了。

修改 root 密码

出于安全考虑,root 密码不宜为空,所以需要在密码重置之后,再重新设置一个密码。

方法一:SET PASSWORD

​SET PASSWORD FOR "username"=PASSWORD("new password");​

以 root 身份登录 mysql,再使用 set password 命令修改密码:


1

2



​mysql> set password for root@localhost = password("pswd");​

​Query OK, 0 rows affected, 1 warning (0.00 sec)​


方法二:mysqladmin

​mysqladmin -u "username" -p password "new password"​

执行该命名之后会提示输入原密码,输入正确后即可修改。


1

2

3

4

5



​C:\Program Files\MySQL\MySQL Server 5.7\bin> mysqladmin -u root -p password pswd​

​Enter password: ****​

​mysqladmin: [Warning] Using a password on the command line interface can be insecure.​

​Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.​


方法三:UPDATE TABLE

​UPDATE mysql.user SET authentication_string=PASSWORD("new password") WHERE user="username";​

在重置 root 密码的同时,也可以设置默认密码。不过密码不能为明文,必须使用 password() 函数加密。


1

2

3

4

5



​mysql> update mysql.user set authentication_string=password("pswd") where user="root";​

​Query OK, 1 row affected, 1 warning (0.00 sec)​

​mysql> flush privileges;​

​Query OK, 0 rows affected (0.01 sec)​


 设置数据库远程登录
  1. 在服务器上登录数据库,然后执行如下授权SQL语句。该授权SQL语句的含义为root用户可用任何IP地址登录数据库,操作任何数据库中的任何对象。 grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; 参数说明如下。
  • ​*.*​​参数,第一个“*”为数据库占位符,如果填“*”则代表所有数据库。第二个“*”为数据库对象占位符,如果填“*”则代表数据库中所有对象。
  • ​'root'@'%'​​参数,root为授权登录的数据库账户,“%”为IP地址占位符。假如要限制只能在1.1.1.1登录,则需要把“%”改成1.1.1.1。如果填“%”则代表允许任何IP地址登录。
  • ​'123456'​​参数,该参数为数据库密码。
  1. 执行如下SQL语句,刷新权限。 flush privileges;
  2. 确认远程MySQL客户端可正常连接数据库。