mysql官网下载地址:https://dev.mysql.com/downloads/mysql/
新版安装包解压后,没有网上教程里面提到的data文件夹和my-default.ini,如下图所示

2.在下面目录下创建my.ini,内容如下:

character_set_server=utf8 #这里网上很多是default-character-set=utf8 ,容易出错
port = 3306
basedir=D:\Java\mysql-5.7.24-winx64
datadir=D:\MySQL\MySQL Server 5.7.23\data 在这里不需要自己去创建一个空的data文件夹
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
可以直接复制粘贴,主要修改下basedir后的路径,注意路径中为\而非\
3.进入dos的命令行,用administrator进入
a.进入MySQL的bin目录,输入mysqld –install可以安装MySQL
D:\Java\mysql-5.7.35-winx64\bin>mysqld -install
Service successfully installed.
或之前已安装过Mysql卸载不干净
D:\Java\mysql-5.7.35-winx64\bin>mysqld -install
The service already exists!
查看是否存在
D:\Java\mysql-5.7.35-winx64\bin>sc query mysql
SERVICE_NAME: mysql
TYPE : 10 WIN32_OWN_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
确认之前已安装过
进行再删除
D:\Java\mysql-5.7.35-winx64\bin>sc delete mysql
[SC] DeleteService 成功
即可安装Mysql
D:\Java\mysql-5.7.35-winx64\bin>mysqld -install
Service successfully installed.
输入mysqld --initialize --user=root --console(,初始化,创建root账户.可直接复制)
运行后
…
…到最后一行
[Note] A temporary password is generated for root@localhost:
OR5tM511qp_&(这个就是初始密码)
如果没有密码,则

启动MySQL服务
D:\Java\mysql-5.7.35-winx64\bin>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。
进入MySQL的bin目录mysql,输入
D:\Java\mysql-5.7.35-winx64\bin>mysql
报
ERROR 1045 (28000): Access denied for user ‘ODBC’@‘localhost’ (using password: NO)
账号或密码有误
使用新打开的管理员身份下运行的cmd窗口输入以下代码:
mysqld --skip-grant-tables
有些同学的mysql安装目录可能不在C盘 需要切换盘符为你装mysql的那个盘 例如我的是D盘
我的文件夹目录为:D:\Java\mysql-5.7.35-winx64
输入 D: 即可切换盘符 “注意:所有的代码都要用英文输入法,不然会出错,切记切记!”

打完回车之后,这个窗口就不会动了,保持这个窗口在后台打开,再在管理员权限下重新开一个新的cmd窗口。
在新窗口下,用上面切换盘符的方法,再把路径调整到你安装mysql的文件夹目录下

下一步,系统会再次跳出 mysql>, 输入use mysql;

此时系统文字回复数据库已经切换至mysql,此时在新一行跳出来的 mysql>,输入 show tables;

按照传统改密码方式发现没有 password这个字段。
mysql> update user set password=password(‘root’) where user=‘root’;
ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’
查询user表结构
mysql> desc user;
±-----------------------±----------------------------------±-----±----±----------------------±------+
| Field | Type | Null | Key | Default | Extra |
±-----------------------±----------------------------------±-----±----±----------------------±------+
| Host | char(60) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| Select_priv | enum(‘N’,‘Y’) | NO | | N | |
| Insert_priv | enum(‘N’,‘Y’) | NO | | N | |
| Update_priv | enum(‘N’,‘Y’) | NO | | N | |
| Delete_priv | enum(‘N’,‘Y’) | NO | | N | |
| Create_priv | enum(‘N’,‘Y’) | NO | | N | |
| Drop_priv | enum(‘N’,‘Y’) | NO | | N | |
| Reload_priv | enum(‘N’,‘Y’) | NO | | N | |
| Shutdown_priv | enum(‘N’,‘Y’) | NO | | N | |
| Process_priv | enum(‘N’,‘Y’) | NO | | N | |
| File_priv | enum(‘N’,‘Y’) | NO | | N | |
| Grant_priv | enum(‘N’,‘Y’) | NO | | N | |
| References_priv | enum(‘N’,‘Y’) | NO | | N | |
| Index_priv | enum(‘N’,‘Y’) | NO | | N | |
| Alter_priv | enum(‘N’,‘Y’) | NO | | N | |
| Show_db_priv | enum(‘N’,‘Y’) | NO | | N | |
| Super_priv | enum(‘N’,‘Y’) | NO | | N | |
| Create_tmp_table_priv | enum(‘N’,‘Y’) | NO | | N | |
| Lock_tables_priv | enum(‘N’,‘Y’) | NO | | N | |
| Execute_priv | enum(‘N’,‘Y’) | NO | | N | |
| Repl_slave_priv | enum(‘N’,‘Y’) | NO | | N | |
| Repl_client_priv | enum(‘N’,‘Y’) | NO | | N | |
| Create_view_priv | enum(‘N’,‘Y’) | NO | | N | |
| Show_view_priv | enum(‘N’,‘Y’) | NO | | N | |
| Create_routine_priv | enum(‘N’,‘Y’) | NO | | N | |
| Alter_routine_priv | enum(‘N’,‘Y’) | NO | | N | |
| Create_user_priv | enum(‘N’,‘Y’) | NO | | N | |
| Event_priv | enum(‘N’,‘Y’) | NO | | N | |
| Trigger_priv | enum(‘N’,‘Y’) | NO | | N | |
| Create_tablespace_priv | enum(‘N’,‘Y’) | NO | | N | |
| ssl_type | enum(’’,‘ANY’,‘X509’,‘SPECIFIED’) | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
| plugin | char(64) | NO | | mysql_native_password | |
| authentication_string | text | YES | | NULL | |
| password_expired | enum(‘N’,‘Y’) | NO | | N | |
| password_last_changed | timestamp | YES | | NULL | |
| password_lifetime | smallint(5) unsigned | YES | | NULL | |
| account_locked | enum(‘N’,‘Y’) | NO | | N | |
±-----------------------±----------------------------------±-----±----±----------------------±------+
此时在新一行跳出来的 mysql>,输入 select user,host,authentication_string from user;

网上查了一下据说5.7 版本password 字段改成authentication_string password函数还是原来的password函数
mysql> update user set authentication_string=‘root’ where user=‘root’;
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
想要查一下,密码是否成功修改,可以在新一行跳出来的 mysql>,输入 select user,host,authentication_string from user;

再输入flush privileges; --刷新一下,确保修改密码立即生效
再输入quit; --退出
再关掉之前
D:\Java\mysql-5.7.35-winx64\bin>mysqld –skip-grant-tables --此时需关掉此命令窗口,不然还会继续无密码也可以登录的状态
重启mysql
D:\Java\mysql-5.7.35-winx64\bin>net stop mysql
MySQL 服务正在停止…
MySQL 服务已成功停止。
D:\Java\mysql-5.7.35-winx64\bin>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。

查看show databases;时
此时系统会提示你修改密码,并且必须使用ALTER USER的方式修改,另外,无法执行其他任何语句:
mysql> alter user ‘root’@‘localhost’ identified by ‘root’;
Query OK, 0 rows affected (0.00 sec)
如果出现以上完成后还报错以下错误
1045-Access denied for user ‘root’@‘localhost’ --表示没有权限
解决方法:
-
打开cmd
D:\Java\mysql-5.7.35-winx64\bin>mysqld –skip-grant-tables --表可以无密码登录 -
再打开一个cmd --再次以无密码进入


按图片中的红框操作即可
- 最后用Navicat for MySQL测试下

完成
如果此文章有帮助到大家,麻烦大家点个赞,谢谢
一定要看的干货
链接: 除了接私单,写博客,做教程之外,程序员如何利用自身技术,实现躺着赚钱!
本文介绍了在Windows上安装MySQL 5.7.17的详细步骤,包括创建my.ini配置文件、初始化数据库、设置root用户密码。遇到的挑战包括新版本MySQL缺少data文件夹和my-default.ini,以及密码字段更改为authentication_string。通过mysqld命令安装和删除服务,使用命令行工具修改密码,解决了5.7版本的密码修改问题。
2119

被折叠的 条评论
为什么被折叠?



