mysql5.1 系列 关于用户授权的一个bug

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

不知道我这文章名字这样写是否精确,但是我在5.1.37 和 5.1.60 两个版本上碰到了这样的问题。

以前网站链接数据库的用户权限是 grant all on *.* to user identified by 'password'

后来感觉这样的权限太大,想修改为只能从特定主机访问特定库,于是执行

revoke all on *.* from user;

然后重新赋权限:revoke all on ledb.* from user@192.168.100.10;

之后flush privileges;


然后到192.168.100.10机器上登陆mysql,执行mysql -uuser -h192.168.100.11 -p

注:192.168.100.11是mysql服务器ip

登陆成功,但是无法执行任何操作,例如执行show databases;

会提示如下报错:

mysql> show databases;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:  197738
Current database: *** NONE ***
ERROR 2013 (HY000): Lost connection to MySQL server during query

查看mysql服务器错误日志,有如下报错:

131120 11:28:01 [Warning] Aborted connection 5058 to db: 'unconnected' user: '7cacti5' host: 'localhost' (init_connect command failed)

后来尝试了:删除用户,在重新授权,也不行。

最后 查询错误日志里的错误提示(init_connect command failed),总算在mysql官网找到了答案,原来这是一个bug。官网上给出了修复方法,在此贴出,希望能帮到别人。

How to repeat:
mysql -uroot -P5137
-------------
DROP USER 'roel'@'localhost';
DROP PROCEDURE IF EXISTS LOGINUSER;

CREATE USER 'roel'@'localhost';
GRANT SELECT ON *.* TO 'roel'@'localhost';

DELIMITER //
CREATE PROCEDURE LOGINUSER()
BEGIN
SELECT USER(),CURRENT_USER();
SELECT CONCAT(CURRENT_DATE(),' ',CURRENT_TIME());
END;
// 
DELIMITER ;

SET @@global.init_connect='CALL LOGINUSER();';
 

SET @@global.init_connect=''; 

Query OK, 0 rows affected (0.00 sec)

然后,重新给用户授权即可解决问题。

虽然问题搞定了,但是还不是很清楚原理,看修复过程,应该是掉用init_connect这个命令的时候出错,然后重建了这个命令或功能。

原文链接:http://bugs.mysql.com/bug.php?id=47032




     本文转自kai404 51CTO博客,原文链接:http://blog.51cto.com/kaifly/1329059,如需转载请自行联系原作者



相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
【MySQL】MySQL8.0 创建用户及授权 - 看这篇就足够了
本文介绍了在MySQL 8.0+版本中创建和管理用户的详细步骤,包括通过命令行进入MySQL、创建数据库、用户及授权等操作,并提供了具体命令示例。适合初学者参考学习,帮助实现系统的权限管理和安全控制。
3163 3
【MySQL】MySQL8.0 创建用户及授权 - 看这篇就足够了
(十八)MySQL排查篇:该如何定位并解决线上突发的Bug与疑难杂症?
前面《MySQL优化篇》、《SQL优化篇》两章中,聊到了关于数据库性能优化的话题,而本文则再来聊一聊关于MySQL线上排查方面的话题。线上排查、性能优化等内容是面试过程中的“常客”,而对于线上遇到的“疑难杂症”,需要通过理性的思维去分析问题、排查问题、定位问题,最后再着手解决问题,同时,如果解决掉所遇到的问题或瓶颈后,也可以在能力范围之内尝试最优解以及适当考虑拓展性。
545 3
深入理解MySQL数据库存储引擎及数据授权
深入理解MySQL数据库存储引擎及数据授权
140 0
|
11月前
|
MySQL8.0创建新用户并授权
MySQL8.0创建新用户并授权
119 1
MySQL8.0创建新用户并授权
Linux下mysql添加用户并授权数据库权限
Linux下mysql添加用户并授权数据库权限
604 0
oceanbase在MySQL语法兼容模式下,在授权语法、行为方面 是否与 开源MySQL完全一致 ?
oceanbase在MySQL语法兼容模式下,在授权语法、行为方面 是否与 开源MySQL完全一致 ?
308 2
【MySql】入门,存储引擎,授权----保姆级别教学
【MySql】入门,存储引擎,授权----保姆级别教学
93 0
【Bug解决】Thinkphp5 PDO::__construct(): MySQL server has gone away解决办法
【Bug解决】Thinkphp5 PDO::__construct(): MySQL server has gone away解决办法
209 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等