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不需要密码就可以登录(Linux中) -> 正文阅读

[大数据]MySQL不需要密码就可以登录(Linux中)

在安装完 MySQL 的时候发现,不用输入密码,都可以进入 MySQL ,研究半天,终于找到了解决方式。

第一步、在控制台输入(修改 mysqld.cnf 文件)

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

进入到 mysqld.cnf 这个配置文件,然后在这个配置文件中的 [mysqld] 这一块中加入 skip-grant-tables 这句话,如下图所示

 [mysqld]

 # * Basic Settings

 user = mysql
 pid-file = /var/run/mysqld/mysqld.pid
 socket = /var/run/mysqld/mysqld.sock
 port = 3306
 basedir = /usr
 datadir = /var/lib/mysql
 tmpdir = /tmp
 lc-messages-dir = /usr/share/mysql
 skip-external-locking
 character-set-server=utf8
 collation-server=utf8_general_ci
 skip-grant-tables    # 增加这一句话
作用:可以跳过验证,不用密码登录进入 MySQL

使用下面的指令,重启 MySQL 服务

service mysql restart

第二步、在控制台输入下面指令

mysql
# 或者
mysql -u root
# 或者
mysql -u root -p

遇见输入密码的提示直接回车即可,进入 MySQL 后,分别执行下面三句话

use mysql; 

update user set authentication_string=password("你的密码") where user="root"; 

flush privileges; 

效果如下图所示:
在这里插入图片描述
然后退出 MySQL

第三步、重新进入到 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
 basedir = /usr
 datadir = /var/lib/mysql
 tmpdir = /tmp
 lc-messages-dir = /usr/share/mysql
 skip-external-locking
 character-set-server=utf8
 collation-server=utf8_general_ci
# skip-grant-tables    # 注释掉这一句话

再次在控制台输入 mysql -u root -p ,这个时候就得输入密码,才可以登录 MySQL 了。

如果此时还是不用输密码,请看第四步

第四步、如果此时还是不用输密码,那么就需要返回第三步,把注释掉的那条语句重新放开(就是删除#符号),重新进入 MySQL 中,执行下面的命令

use mysql; 

select user,plugin from user; 

效果如下图所示:
在这里插入图片描述

从图中可以看到出,错误原因是因为 rootplugin 字段是 auth_socket ,那我们改为 mysql_native_password 就行了。执行下面的命令:

update user set authentication_string=password("你的密码") ,plugin='mysql_native_password' where user='root';

再次执行

select user, plugin from user;

我们能看到root用户的字段改成功了,如下图所示。
在这里插入图片描述
最后退出 MySQL返回执行第三步

那么这个问题就完全解决了。

补充:auth_socket 验证插件的使用场景:

auth_socket 这个插件验证方式有以下特点:

  • 首先,这种验证方式不要求输入密码,即使输入了密码也不验证。这个特点让很多人觉得很不安全,实际仔细研究一下这种方式,发现还是相当安全的,因为它有另外两个限制;
  • 只能用 UNIXsocket 方式登陆,这就保证了只能本地登陆,用户在使用这种登陆方式时已经通过了操作系统的安全验证;
  • 操作系统的用户和 MySQL 数据库的用户名必须一致,例如你要登陆 MySQLroot 用户,必须用操作系统的 root 用户登陆。

auth_socket 这个插件因为有这些特点,它很适合我们在系统投产前进行安装调试的时候使用,而且也有相当的安全性,因为系统投产前通常经常同时使用操作系统的 root 用户和 MySQLroot 用户。当我们在系统投产后,操作系统的 root 用户和 MySQLroot 用户就不能随便使用了。

[mysqld] 中添加下边的代码,也可以更改 MySQL 默认的身份认证插件

default_authentication_plugin=mysql_native_password
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 11:50:45  更:2021-09-09 11:52:06 
 
开发: 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/23 20:44:39-

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