解决MySQL添加新用户-ERROR 1045 (28000)的问题
作者:hanease 发布时间:2024-01-15 22:56:29
MySQL添加新用户,见文章底部。
按照正常思维,创建用户和设置密码什么的,应该是一个动作完成的。然而事实并非如此。
我每次都是通过在网上找代码来创建MySQL的用户。如果无效,就再搜一段。
现在我心累了,必须写个自己的教程。
1,先要连接到MySQL,工具就是在终端上输入mysql。
一般来说可以设置几个参数,重要的是-u代表用户,比如root,或者guest,-p代表密码,-h代表地址,如果是localhost,可以省略。
例子 mysql --user user --host localhost --port 3306 --password
回车之后输入密码即可。
偶尔会遇到直接使用sudo mysql可以登录的情况。
2,选择mysql数据库。
use mysql;
3,创建用户,比如用户名是demo,则使用
create user demo;
4,给用户权限。
grant all on *.* to 'demo'@'localhost' identified by 'password' ;
这里是把操作数据库的所有权限给了demo,并且设置密码是password
如果希望该用户可以创建新的用户,并授权,就使用添加with grant option
grant all on *.* to 'demo'@'localhost' identified by 'password' with grant option;
5,刷新下。flush privileges;
问题:ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO)
很久没用这台电脑的mysql了,今天需要连接数据库,启动数据库报错:
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO)
解决方法:
查阅资料后知道了,应该使用已知的用户名和密码登陆
mysql -u root -p
然而密码忘了,试了好几遍终于试出来了:
然后修改成通用的密码,不乱折腾了:
发现很多教程都过时了,我的版本是Server version: 8.0.19 MySQL ,最新的方法:
mysql> use mysql;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
mysql> flush privileges;
退出验证下看看有没有成功:
可以看到修改密码成功了。
然后呢,我又假装密码忘了,把忘记密码的修改密码方法演示一下:
第一步:关闭Mysql服务
首先先停止mysql服务。可通过net stop mysql或者任务管理器中关闭。
以管理员权限操作:(这是第一个窗口)
第二步:跳过Mysql密码验证
进入命令提示符(管理员登陆)操作,进入mysql目录中bin文件夹下,mysql8.0与其他版本不同的地方在于无法直接使用mysqld --skip-grant-tables来跳过密码登录。在这我们使用mysqld -console --skip-grant-tables --shared-memory来跳过权限验证。
输入执行后没有反馈,新开一个管理员窗口重新执行。(这是第二个窗口)
进入目录后,确保自己已经关闭了Mysql的服务:net stop mysql
关闭Mysql服务之后,继续在D:\mysql-8.0.19-winx64\bin目录下进行操作:
输入
mysqld --console --skip-grant-tables --shared-memory
在输入这行代码之后,如下显示,我们就已经成功跳过Mysql的密码登录了:
第三步:无密码方式进入Mysql
在上述步骤之后,再打开一个管理员模式运行的cmd.exe (这是第三个窗口)
进入mysql下的bin目录后,直接登录mysql
不需要通过net start mysql打开mysql服务
在命令行中输入以下代码
d:
cd D:\mysql-8.0.19-winx64\bin(此处输入自己电脑上的安装目录)
mysql -u root -p
如图:
此时会显示让你输入密码,直接回车,就可以成功连接Mysql。
第四步:将登陆密码设置为空
输入代码,将密码设置为空(此时还不能直接修改密码,必须先设置为空,否则会报错)
输入:
use mysql; (使用mysql数据表)
update user set authentication_string='' where user='root';(将密码置为空)
quit; (然后退出Mysql)
操作如图:
第五步:更改自己的登陆密码
这里分为两个部分
1.关闭前两个cmd窗口(一定要关闭!);
2.在第三个窗口中输入代码;
net stop mysql(关闭mysql服务,虽然会显示没有开启服务,但是以防万一)
net start mysql(再打开mysql服务)
(这里不要嫌麻烦,如果上一个mysql服务没关闭,我们依旧是无密码登陆)
操作如图:
接着输入:
cd D:\mysql-8.0.19-winx64\bin (此处输入自己电脑上的安装目录)
mysql -u root -p
(此处会显示输入密码,直接回车就好了,第四步我们已经将他置为空了)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';(更改密码)
如图:
最后一步:验证密码是否修改成功
输入:
quit(退出mysql)
mysql -u root -p
(输入新密码,再次登录)
图示:
补充:下面看下MySQL添加新用户
按照正常思维,创建用户和设置密码什么的,应该是一个动作完成的。然而事实并非如此。
我每次都是通过在网上找代码来创建MySQL的用户。如果无效,就再搜一段。
现在我心累了,必须写个自己的教程。
1,先要连接到MySQL,工具就是在终端上输入mysql。
一般来说可以设置几个参数,重要的是-u代表用户,比如root,或者guest,-p代表密码,-h代表地址,如果是localhost,可以省略。
例子 mysql --user user --host localhost --port 3306 --password
回车之后输入密码即可。
偶尔会遇到直接使用sudo mysql可以登录的情况。
2,选择mysql数据库。
use mysql;
3,创建用户,比如用户名是demo,则使用
create user demo;
4,给用户权限。
grant all on *.* to 'demo'@'localhost' identified by 'password' ;
这里是把操作数据库的所有权限给了demo,并且设置密码是password
如果希望该用户可以创建新的用户,并授权,就使用添加with grant option
grant all on *.* to 'demo'@'localhost' identified by 'password' with grant option;
5,刷新下。flush privileges;
参考地址:https://bytes.com/topic/mysql/answers/614815-creating-new-mysql-user
来源:https://www.cnblogs.com/hanease/p/15958001.html


猜你喜欢
- python 3.x版本print输出不换行的格式如下:print(x, end="")其中,end=&quo
- 前言随时随地发现新鲜事!微博带你欣赏世界上每一个精彩瞬间,了解每一个幕后故事。分享你想表达的,让全世界都能听到你的心声!今天我们通过pyth
- 虽然初恋是java, 可是最近是越来越喜欢python,所以决定追根溯源好好了解下python的原理,架构等等.小脑袋瓜不太好使,只能记录下
- 压缩数据库文件可以提高数据库的性能,但是有些时候在压缩数据库时,系统会提醒用户该数据库不能压缩。如果在Access数据库中删除数据库对象,或
- 效果图代码<template> <div class="outWrap"> &nbs
- 前几篇都是手动录入或随机函数产生的数据。实际有许多类型的文件,以及许多方法,用它们从文件中提取数据来图形化。比如之前python基础(12)
- 这样的一段删除空字符串的代码:def not_empty(s): return s and s.strip()print(lis
- 方法一我常用的做法,就是在数据库中加一个删除标识字段,如: isdel=1 这样就代码删除的字段了方法二直接限制mysql删除启动MySQL
- 一、介绍argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后 argparse 将弄清如何从 sys.ar
- 一、避免Firefox 背景图不显示的兼容问题,定义background 属性,先后顺序不能随意变动。background : backgr
- 视频本教程的视频碰撞是怎么回事在上一次教程中,我们添加了图形,将精灵从普通矩形更改为更漂亮的PNG图像。然而,这带来了一个问题:有时游戏会认
- 一、jpype模块是什么?能够让 python 代码方便地调用 Java 代码的工具二、jpype模块安装安装和其它模块没区别,但是注意模块
- 1)去重指定多列去重,这是在dataframe没有独一无二的字段作为PK(主键)时,需要指定多个字段一起作为该行的PK,在这种情况下对整体数
- 目录前言cv2.drawMarker()函数说明参数说明利用鼠标回调函数交互式画点例1,简单的例子例2,删除功能总结前言这里所谓画点的意思是
- SQL 中的运算符 1算术运算符:+:加运算,求两个数或表达式想加的和-:减运算,求两个数或表达式相减的差*,乘运算,求两个数或表
- GO类型转换及与C的类型转换类型转换语法dst := float32(src)示例var num int = 520f32 := float
- Tip:本文仅供学习与交流,切勿用于非法用途!!!背景介绍有个同学问我:“XXX,有没有办法搜集一下淘宝的商品信息啊,我想要做个统计”。于是
- 论坛有人问起如何获取读取CSS属性值,就写了下面这段兼容各浏览器的获取HTML元素的css属性值函数:function getSt
- 调用re库,通过使用compile、findall获取字符串中的emailimport reemail=re.compile(r
- 翻转一个链表样例:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null一