数据库新建用户后(Host:%),报错:localhost无法连接

存在问题

在给数据库(MySQL、MariaDB等)创建了新的用户名(eg:maxscale)后,无法使用新用户名登录,并报如下错误:ERROR 1045 (28000): Access denied for user 'maxscale'@'localhost' (using password: YES)

相信遇到该问题的人都有这样的疑问:明明创建用户时,host为‘%’,正常情况下所有的主机应该都可以连接呀,为什么报错'localhost'无法连接?

解决方案及问题分析,如下!

查看用户表

MariaDB [(none)]> select user,host from mysql.user;
+-------------+----------------+
| User        | Host           |
+-------------+----------------+
|             | localhost      |
| mariadb.sys | localhost      |
| mariadb10   | localhost      |
| root        | localhost      |
|             | vm172-0-11-157 |
+-------------+----------------+

创建用户

-- 创建用户
create user maxscale@'%' identified by "123456";
grant replication client, replication slave, select on *.* to maxscale@'%';-- 查看用户
MariaDB [(none)]> select user,host from mysql.user;
+-------------+----------------+
| User        | Host           |
+-------------+----------------+
| maxscale    | %              |
|             | localhost      |
| mariadb.sys | localhost      |
| mariadb10   | localhost      |
| root        | localhost      |
|             | vm172-0-11-157 |
+-------------+----------------+
9 rows in set (0.003 sec)

连接数据库

在已经启动数据库的前提下,连接数据库:

/home/mariadb10/node5307/mysql/bin/mysql --defaults-file=/home/mariadb10/node5307/my.cnf -h127.0.0.1 -umaxscale -p123456 -P5307

连接报错:

原因分析

上述连接命令使用127.0.0.1作为主机名,MariaDB在mysql.user表中首先查找Host为127.0.0.1的用户条目,如果没有找到,它会查找Host为localhost的用户条目。由于maxscale用户对应的Host是%,理论上应该能够匹配任何主机,包括127.0.0.1和localhost。

但是,如果MariaDB在处理连接请求时,由于某些原因(可能是配置问题或权限问题)没有正确识别maxscale@%用户,它可能会退回到使用匿名用户。

解决办法

删除匿名用户!

1)查找匿名用户

MariaDB [(none)]> SELECT User, Host FROM mysql.user WHERE User = '';
+------+----------------+
| User | Host           |
+------+----------------+
|      | localhost      |
|      | vm172-0-11-157 |
+------+----------------+
2 rows in set (0.001 sec)

2)删除匿名用户

MariaDB [(none)]> drop user ''@'localhost';
Query OK, 0 rows affected (0.002 sec)MariaDB [(none)]> SELECT User, Host FROM mysql.user WHERE User = '';
+------+----------------+
| User | Host           |
+------+----------------+
|      | vm172-0-11-157 |
+------+----------------+
1 row in set (0.001 sec)

3)重新连接数据库

注意:匿名用户权限很高,非必要情况下,优选删除匿名用户!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/64968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年大型语言模型(LLMs)的发展回顾

2024年对大型语言模型(LLMs)来说是充满变革的一年。以下是对过去一年中LLMs领域的关键进展和主题的总结。 GPT-4的壁垒被打破 去年,我们还在讨论如何构建超越GPT-4的模型。如今,已有18个组织拥有在Chatbot Arena排行榜上超越原…

数据挖掘——支持向量机分类器

数据挖掘——支持向量机分类器 支持向量机最小间隔面推导基于软间隔的C-SVM非线性SVM与核变换常用核函数 支持向量机 根据统计学习理论,学习机器的实际风险由经验风险值和置信范围值两部分组成。而基于经验风险最小化准则的学习方法只强调了训练样本的经验风险最小…

检索增强生成

概述 检索增强生成(Retrieval-Augmented Generation,RAG)是一种将信息检索与语言模型相结合的技术。由Facebook AI Research于2020年提出,它把数据库的优势与语言模型的优势相结合。它能让模型从外部知识库中检索信息&#xff0c…

在 SQL 中,区分 聚合列 和 非聚合列(nonaggregated column)

文章目录 1. 什么是聚合列?2. 什么是非聚合列?3. 在 GROUP BY 查询中的非聚合列问题示例解决方案 4. 为什么 only_full_group_by 要求非聚合列出现在 GROUP BY 中?5. 如何判断一个列是聚合列还是非聚合列?6. 总结 在 SQL 中&#…

ETL处理工具Kettle入门

1. Kettle简介 Kettle(现已更名为Pentaho Data Integration,简称PDI)是一个开源的ETL工具,能够进行数据的抽取(Extract)、转换(Transform)和加载(Load)。它是…

petalinux2017.4对linux4.9.0打实时补丁

准备工作: 1.windows:安装vivado 2017.4,xilinx sdk 2017.4 2.ubuntu16.04:安装petalinux 2017 3.黑金ax7020,sd卡 一、准备linux内核的操作系统 1.1 Petalinux配置 Petalinux使用教程-CSDN博客非常详细&#xf…

Maven 教程之 pom.xml 详解

Maven 教程之 pom.xml 详解 pom.xml 简介 什么是 pom POM 是 Project Object Model 的缩写,即项目对象模型。 pom.xml 就是 maven 的配置文件,用以描述项目的各种信息。 pom 配置一览 <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi

Golang的缓存一致性策略

Golang的缓存一致性策略 一致性哈希算法 在Golang中&#xff0c;缓存一致性策略通常使用一致性哈希算法来实现。一致性哈希算法能够有效地解决缓存节点的动态扩容、缩容时数据重新分布的问题&#xff0c;同时能够保证数据访问的均衡性。 一致性哈希算法的核心思想是将节点的哈希…

【机器学习:一、机器学习简介】

机器学习是当前人工智能领域的重要分支&#xff0c;其目标是通过算法从数据中提取模式和知识&#xff0c;并进行预测或决策。以下从 机器学习概述、有监督学习 和 无监督学习 三个方面进行介绍。 机器学习概述 机器学习定义 机器学习&#xff08;Machine Learning&#xff0…

蓝桥杯JAVA--003

需求 2.代码 public class RegularExpressionMatching {public boolean isMatch(String s, String p) {if (p.isEmpty()) {return s.isEmpty();}boolean firstMatch !s.isEmpty() && (s.charAt(0) p.charAt(0) || p.charAt(0) .);if (p.length() > 2 && p…

被催更了,2025元旦源码继续免费送

“时间从来不会停下&#xff0c;它只会匆匆流逝。抓住每一刻&#xff0c;我们才不会辜负自己。” 联系作者免费领&#x1f496;源&#x1f496;码。 三联支持&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 更多内容敬请期待。如有需要源码可以联系作者免…

WebRTC的线程事件处理

1. 不同平台下处理事件的API&#xff1a; Linux系统下&#xff0c;处理事件的API是epoll或者select&#xff1b;Windows系统下&#xff0c;处理事件的API是WSAEventSelect&#xff0c;完全端口&#xff1b;Mac系统下&#xff0c;kqueue 2. WebRTC下的事件处理类&#xff1a; …

关于Zotero

1、文献数据库&#xff1a; Zotero的安装 Zotero安装使用_zotero只能安装在c盘吗-CSDN博客 2、如何使用zotero插件 我刚下载的时候就结合使用的是下面的这两个博主的分享&#xff0c;感觉暂时是足够的。 Zotero入&#x1f6aa;基础 - 小红书 Green Frog申请easyscholar密钥…

企业三要素如何用PHP实现调用

一、什么是企业三要素&#xff1f; 企业三要素即传入的企业名称、法人名称、社会统一信用代码或注册号&#xff0c;校验此三项是否一致。 二、具体怎么样通过PHP实现接口调用&#xff1f; 下面我们以阿里云为例&#xff0c;通过PHP示例代码进行调用&#xff0c;参考如下&…

Go 语言中强大的配置管理库—Viper

Viper 是 Go 语言中强大的配置管理库&#xff0c;广泛用于云原生和微服务开发中。它支持多种配置文件格式&#xff08;如 YAML、JSON、TOML 等&#xff09;、环境变量、命令行参数以及远程配置管理。 Viper 的主要功能 1. 支持多种格式的配置文件&#xff1a; • YAML、JSON…

鸿蒙-封装loading动画

import { AnimatorOptions, AnimatorResult } from "kit.ArkUI" export enum SpinImageType { RedLoading, WhiteLoading } Component export struct SpinImage { Prop type?: SpinImageType Prop url?: string State animatedValue: number 0 …

今日复盘103周五(189)

1、早上&#xff0c;看了一下二手书里的十种主要游戏类型的相关内容。 其实收获不大&#xff0c;主要是引发思考。 2、白天&#xff0c;持续多日的模式1的白模原型关卡结束&#xff0c;开始转做准正式资源的关卡&#xff0c; 但进度低于预期。 并不是改改参数那么简单轻松&a…

OJ随机链表的复制题目分析

题目内容&#xff1a; 138. 随机链表的复制 - 力扣&#xff08;LeetCode&#xff09; 分析&#xff1a; 这道题目&#xff0c;第一眼感觉非常乱&#xff0c;这是正常的&#xff0c;但是我们经过仔细分析示例明白后&#xff0c;其实也并不是那么难。现在让我们一起来分析分析…

uc/os-II 原理及应用(一) 嵌入式实时系统基本概念

基于嵌入式实时操作系统μCOS-II原理及应用(第2版)-任哲 自行网上寻找资源。 计算机系统的中分为计算机硬件系统与计算机软件系统&#xff0c;计算机软件系统由上到下分为&#xff0c;应用软件&#xff0c;系统软件&#xff0c;操作系统;操作系统一般在计算机软件的最低层&…

C++ 并发专题 - std::promise 和 std::future 介绍

一&#xff1a;概述 std::promise 和 std::future 是C标准库的两种工具&#xff0c;主要用于实现线程之间的异步通信。它们属于C并发库的一部分&#xff0c;提供了一种安全&#xff0c;优雅的方式来在线程之间传递结果或状态。 二&#xff1a;std::promise 介绍 std::promise …