扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在【mysqld】模块添加:skip-grant-tables 保存退出后重启mysql;
创新互联公司-专业网站定制、快速模板网站建设、高性价比新密网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式新密网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖新密地区。费用合理售后完善,10年实体公司更值得信赖。
解决1044错误问题:
1044问题实质是因为你的mysql数据库没有设值密码或者密码不正确导致的。
起因: 初始自动生成的密码太复杂了,并且粘贴过去登录一直报错,所以想直接修改密码
过程:
还有些修改密码的指令是这样的,set password for ‘root’@‘localhost’=password(‘MyNewPass4!’); 也会报错
应该是
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码' PASSWORD EXPIRE NEVER;
Ubuntu在Mysql 8.0在线安装成功后(sudo apt install),默认的root用户密码为空,默认监听本机,只能在本机登录,直接命令`mysql`即可登录 。
Centos安装完成后,可能需要密码,密码位置在
如果没有密码,或者忘记密码请在配置文件加入 skip-grant-tables ,ubuntu配置文件在 /etc/mysql/ 路径下。
注: 跳过密码后,登录进入后必须先 flush privileges 才能修改密码。
1:第一种方式
直接在用Linux命令 mysqladmin 修改。
2:第二种方式
登录mysql 更改密码
显示ok成功。
注:由于我这里没有默认安装validate_password插件,所以直接修改成功,有些默认安装的是修改不成功的,因为太简单的密码,不符合密码规则,会报错如下: ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
3:关于validate_password插件
validate_password是一款密码规则插件,查看密码规则命令:
安装完成后,查看显示如下:
参数说明:
当指定密码规则后,如果嫌麻烦,直接更改密码规则即可,如偏要设置123456简单密码。
虽然改了密码,但是发现root登录仍无需登录密码,或者加参数-p输入密码时,任何密码都可以进入。
原因:查看用户插件信息
显示root插件为auth_socket,这种插件无需密码,所以设置任何密码都无效。
更改插件为 mysql_native_password 或者 caching_sha2_password
更改完成后,需重新设置root密码生效,修改方法同上。修改后,登录需要输入正确密码
注:为了提供更安全的密码加密,MySQL8.0的首选默认密码认证插件是caching_sha2_password,而不是mysql_native_password,根据自己需求选择插件
关于auth_socket插件
这种插件验证方式有以下特点:
auth_socket 这个插件因为有这些特点,它很适合我们在系统投产前进行安装调试的时候使用,而且也有相当的安全性,因为系统投产前通常经常同时使用操作系统的 root 用户和 MySQL 的 root 用户。当我们在系统投产后,操作系统的 root 用户和 MySQL 的 root 用户就不能随便使用了,这时可以换成其它的验证方式,可以使用下面的命令进行切换:
在使用mysql时,如果想修改用户密码,怎么修改?我们可以借助客户端工具来修改,下面来看一下。
01
打开客户端工具Navicat,打开数据库里的mysql库,这是一个系统数据库。
02
打开后,在Tables表里,找到user表,这是保存系统用户的一个表数据。
03
打开后,就可以在这里看到每个数据库的用户名和密码了。
04
要修改密码,我们点击单元格,让其变成编辑状态后,直接输入新的密码就行了。
命令行都要以管理员运行
1:net stop mysql 停止mysql服务
2:mysqld --console --skip-grant-tables --shared-memory 启动MySQL服务的时候跳过权限表认证
3:由于上面的命令行被mysql的服务给占用,我们得重新开启一个新的命令行
4:在新开的命令行中执行mysql
5:update user set authentication_string = '' where user='root' ; 将root用户的密码清空
6:quit 退出,然后在之前的命令行将我们开启的mysql服务停止掉(Ctrl+C或者关闭命令行),然后执行net start mysql 重新启动mysql服务
7:在我们之后开启的命令行中输入mysql -uroot -p 然后按enter键,输入密码继续按enter键(这里密码已经被清空),
8:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; 修改密码
9:退出后,使用新密码登录
注意的地方,网上有些给的是使用update命令在第五步直接修改密码为我们重置的密码,然后使用flush privileges;命令刷新权限再退出,重启mysql服务,然后使用我们重置的密码重新登陆。然而你会发现登录会提示密码不正确,
下面是使用update命令将密码修改为root
登录报错,说明使用update直接修改密码是不可以的。我们也可以从上面看到update保存的密码是明文
使用alter命令修改后的密码是加密的
update 方法保存的为明文是由于没有使用password()方法,而password()方法在mysql5.7.6版本后已经废弃了,所以必须alter命令去修改密码了。
如果在第5步直接使用alter命令去修改密码也是不可以的,会报错
说是在免鉴权的情况下不支持这个操作
所以我们必须先清空密码,然后再使用alter命令修改密码
ps:mysql5.7.6版本后 废弃user表中 password字段 和 password()方法,所以旧方法重置密码对mysql8.0版本是行不通的,共勉
希望能帮助你,还请及时采纳谢谢
如果不幸忘记或丢失了 MySQL root用户的密码,需要一种方法来以某种方式恢复它。 我们需要知道的是密码存储在用户表中。 这意味着我们需要想办法绕过 MySQL 认证,这样我们才能更新密码记录。
幸运的是,有一个简单的实现,本教程将指导您完成在 MySQL 8.0 版本中恢复或重置 root 用户密码的过程。
根据 MySQL 文档,有两种方法可以重置root用户的密码。其中一种方法是使用 --skip-grant-tables 选项启动 MySQL 服务。 这不太安全,因为当服务以这种方式启动时,所有用户都可以在没有密码的情况下进行连接,不过这种方法比较简单,我们首先来看看这种方法。
如果服务器启动--skip-grant-tables,--skip-networking 选项会自动激活,因此远程连接将不可用。
首先停止MySQL服务
使用 选项 --skip-grant-tables 启动MySQL服务
然后,您只需运行mysq即可连接到mysql服务器。
由于使用 --skip-grant-tables 选项启动服务时禁用了帐户管理,因此我们将不得不重新加载授权。 这样我们以后就可以更改密码:
现在可以运行以下查询来更新密码。 确保将“new_password”更改为您希望使用的实际密码。
现在停止 MySQL 服务器,然后正常启动它。
现在使用新密码再次连接MySQL
启动mysqld时,如果遇到下面的错误
搜索一番,参考文章2和3给出了各种可能性,通过查询可以看出确实有个mysqld服务未关闭,可是之前我确实关闭了mysql,不知道怎么回事。
只能通过kill命令杀死mysql
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流