IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL 8.0 修改密码的那些折腾事 -> 正文阅读

[大数据]MySQL 8.0 修改密码的那些折腾事

MySQL 8.0 修改密码过程

问题背景:安装好 MySQL 后,在初始化 root 账户密码的过程设置错了选项,导致无法登录。

step.1 进入 mysql 的命令行界面

修改 /etc/mysql/mysql.conf.d/mysqld.cnf 文件,添加 skip-grant-tables 选项使得可以以 root 账户免密码登入。

[mysqld]
#
# * Basic Settings
#
user            = mysql
# pid-file      = /var/run/mysqld/mysqld.pid
# socket        = /var/run/mysqld/mysqld.sock
# port          = 3306
# datadir       = /var/lib/mysql

# add here
skip-grant-tables

修改后,重启 mysql

$sudo service mysql restart
mysql -u root -p  # 直接回车进入即可

step.2 修改密码

踩坑一

进入 mysql 表后,使用语句修改密码提示语法错误。

mysql> use mysql;
mysql> UPDATE user SET password=password("your password") WHERE user="root";
# 提示 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '("your password") where user='root'' at line 1

经查阅,发现 password 函数已在 5.7 版本中弃用,并在 8.0 版本中被删除。

踩坑二

发现 password 函数被弃用后,使用以下语句来设置明文密码,继续提示出错。

mysql> UPDATE user SET password="your password" WHERE user="root";
# 提示 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''your password' where user='root'' at line 1

继续查阅资料,发现 password 字段在 8.0 中已改名为 authentication_string 字段。

踩坑三

使用以下语句修改密码,修改倒是修改成功了,但还是登不上去。

mysql> UPDATE user SET authentication_string="your password" WHERE user="root";

查看 user 表时发现,root 用户的 plugin 字段的参数为 auth_sock 。因为 auth_sock 参数的特性,使得只能在 unix 本机上登录,故更改为默认密码登录。

mysql> update user set plugin="caching_sha2_password" where user="root";

PS:其实这时候如果 plugin 不是 auth_sock 的话,也没法登录上去。因为 user 表中存放的是明文密码,而在登录时,MySQL 会将输入的密码进行加密后再与表中的密码进行比较,这样一比较肯定是不相同的,所以就登不上去。(当然,这个只是从其他页面中看到的,没有进行验证。如果有人进行了验证,欢迎留言告诉我。)

有关 auth_sock 的特性:https://blog.csdn.net/ActionTech/article/details/109996422

有关 caching_sha2_password 的相关信息:https://www.cnblogs.com/olinux/p/13201497.html

踩坑四

查阅 MySQL 官方文档,发现了设置密码的教程页面。

https://dev.mysql.com/doc/refman/8.0/en/set-password.html

使用推荐的命令更改密码,继续提示出错。

mysql> ALTER USER user IDENTIFIED BY 'your password';
# ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

提示语句的大致意思是:MySQL 现在运行于附带 skip-grant-tables 选项的模式,无法执行该代码。

终于搞定

使用以下语句将 root 用户的密码设置为空后,刷新权限表。

mysql> update user set authentication_string="" where user="root";
mysql> flush privileges;
mysql> exit

然后注释掉 mysqld.cnf 文件中的 skip-grant-tables 语句。

[mysqld]
#
# * Basic Settings
#
user            = mysql
# pid-file      = /var/run/mysqld/mysqld.pid
# socket        = /var/run/mysqld/mysqld.sock
# port          = 3306
# datadir       = /var/lib/mysql

# add here
# skip-grant-tables

重启 MySQL 后进入使用空密码登录 root 。

$sudo service mysql restart
mysql -u root -p

使用 8.0 推荐的更改密码语句,然后刷新权限表。

mysql> SET PASSWORD FOR 'root'@'localhost' = 'your password';
# 此时如果你设置了一些密码强弱的相关策略(policy),可能会提示你密码强度不够,设置失败啥的。重新输入一次,设置一个强密码即可。
mysql> flush privileges;

MySQL 密码强度设置策略:https://blog.csdn.net/calistom/article/details/87939956


Done !

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 20:46:17  更:2022-02-09 20:48:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:43:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码