当前位置: 首页 > article >正文

数据库新建用户后(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.kler.cn/a/466691.html

相关文章:

  • doris:基于 Arrow Flight SQL 的高速数据传输链路
  • SAP 01-初识AMDP(ABAP-Managed Database Procedure)
  • 【踩坑指南2.0 2025最新】Scala中如何在命令行传入参数以运行主函数
  • 2024 年 MySQL 8.0.40 安装配置、Workbench汉化教程最简易(保姆级)
  • 【MATLAB】【Simulink仿真】向模型中添加自定义子系统
  • AWS 申请证书、配置load balancer、配置域名
  • linux下安装tun模块详细教程
  • 基于FPGA的2FSK+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR
  • 算法-大整数反转
  • UE4_用户控件_10_用图像来显示场景捕获的渲染目标
  • 企业三要素如何用PHP实现调用
  • IIS设置IP+端口号外网无法访问的解决方案
  • 【Python系列】Flask 与 FastAPI:两个 Python Web 框架的对比分析
  • 组合模式详解
  • 依赖冲突`npm install --no-audit --save @testing-library/jest-dom@^5.14.1...` failed
  • CTE与子查询的区别及运行效率比较
  • 使用Dockerfile构建镜像
  • centos8 部署 kubernetes集群
  • 网易云的ip归属地是什么意思?为什么变来变去
  • Segment Anything C++ 项目【Part2:修改源码+自动分割】
  • 我的博客年度之旅:感恩、成长与展望
  • MySQL 表结构在线变更:优雅地解决停机问题
  • 【Rust自学】10.2. 泛型
  • 医学AI公开课第二期|写给癌症研究者的人工智能指南|公开课·25-01-03
  • 论述数据、数据库、数据库管理系统、数据库系统的概念。
  • 利用矢量数据库增强大型语言模型应用