免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6556 | 回复: 17
打印 上一主题 下一主题

【已解决】grant报错,说密码错但是已经用密码登录,尝试mysqld_safe --skip-grant- [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-26 00:37 |只看该作者 |倒序浏览
5可用积分
本帖最后由 cenalulu 于 2013-04-28 13:54 编辑

环境:

mysql -V
mysql  Ver 14.14 Distrib 5.1.62, for pc-linux-gnu (i686) using readline 5.1

uname -r
2.6.18-308.el5

lsb_release -a
LSB Version:    :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 5.8 (Final)
Release:        5.8
Codename:       Final


建立数据库,多实例,方式是每个实例一个单独的配置文件


已经给root用户赋予数据库密码,并可以用该密码登录数据库


进入后,用GRANT 授权从库

mysql> GRANT replication slave on *.*  to 'rep'@'192.168.88.%' identified by '123456abc';
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

就停止数据库  /data/3306/mysql stop     并查看进程,的确停止了


用mysqld_safe   --skip-grant-tables  --skip-networking  的方式进入数据库,重新给root用户赋予密码,并

FLUSH  RPIVILEGES;

quit;

再重启数据库,用密码可以进入数据库


可以有权限使用所有的库,但是grant再次报错


GRANT replication slave on *.*  to 'rep'@'192.168.88.%' identified by '123456abc';
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)


尝试给root授予所有权限

GRANT ALL on *.*  to 'root'@'localhost';
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

原因?已经登入数据库了,并有权限使用所有的库了(尝试use 各个库,均可以)


是否有什么权限错误,把权限表详情放在下面,大家帮忙看看:

个人初步确定问题可能在下面,User有空用户,但是尝试 delete from user where user is NULL or user=''; 并FLUSH  PRIVIEGES;问题还是如上所述

mysql> select Host,User,Grant_priv from db;
+-----------+-----------+------------+
| Host      | User      | Grant_priv |
+-----------+-----------+------------+
| %         |           | N          |
| %         |           | N          |
| localhost | wordpress | N          |
+-----------+-----------+------------+
3 rows in set (0.00 sec)


mysql> select Host,Grant_priv from host;
Empty set (0.00 sec)


mysql> select  User,Grantor from procs_priv;
Empty set (0.00 sec)

mysql> select User,Host,Grant_priv from user;
+-----------+-----------+------------+
| User      | Host      | Grant_priv |
+-----------+-----------+------------+
| root      | localhost | N          |
| root      | 127.0.0.1 | Y          |
| rep       |           | N          |
| wordpress | localhost | N          |
+-----------+-----------+------------+
4 rows in set (0.00 sec)


这个地方是不是有问题?看起来,root@localhost没有grant权限,怎么解决?

mysql> select User,Host,Grant_priv from user;
+-----------+-----------+------------+
| User      | Host      | Grant_priv |
+-----------+-----------+------------+
| root      | localhost | N          |
| root      | 127.0.0.1 | Y          |
| rep       |           | N          |
| wordpress | localhost | N          |
+-----------+-----------+------------+
4 rows in set (0.00 sec)


mysql> select GRANTEE,PRIVILEGE_TYPE,IS_GRANTABLE from COLUMN_PRIVILEGES;
Empty set (0.00 sec)


而且,类似的密码问题反复出现,比如,已经设置好密码,再次登录,总是报错,总是需要停库,再mysqld_safe  --skip-grant-table --skip-networking的方式重新启动,再重设密码,有时候还要删除空用户,才能登录到数据库


重要信息:

在此次报错之前,曾成功GRANT  ALL给root@localhost

可是这次,来给从库授权总是报错,再次尝试给root授权也把错如上述


如何解决?大家帮帮忙看看

最佳答案

查看完整内容

GRANT ALL on *.* to 'root'@'localhost';和GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;这两个是不一样的啊。另外你执行不了应该就是你当前登录的用户没有WITH GRANT OPTION权限。根据你给的权限表来看:mysql> select User,Host,Grant_priv from user;+-----------+-----------+------------+| User | Host | Grant_priv |+-----------+-----------+------------+| ...

论坛徽章:
0
2 [报告]
发表于 2013-04-26 00:37 |只看该作者
GRANT ALL on *.*  to 'root'@'localhost';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;

这两个是不一样的啊。

另外你执行不了应该就是你当前登录的用户没有WITH GRANT OPTION权限。

根据你给的权限表来看:
mysql> select User,Host,Grant_priv from user;
+-----------+-----------+------------+
| User      | Host      | Grant_priv |
+-----------+-----------+------------+
| root      | localhost | N          |
| root      | 127.0.0.1 | Y          |
| rep       |           | N          |
| wordpress | localhost | N          |
+-----------+-----------+------------+



应该是root@127.0.0.1这样登录才能建用户的给权限的。


如果你从头再来一次的话,应该是第一次登录后建root用户并赋予密码的时候就要加上WITH GRANT OPTION

不知道有没说清楚!!!

论坛徽章:
0
3 [报告]
发表于 2013-04-26 10:24 |只看该作者
up一下 谁有解决办法?

论坛徽章:
0
4 [报告]
发表于 2013-04-26 14:33 |只看该作者
本帖最后由 wangjj20 于 2013-04-26 14:34 编辑

mysql -h127.0.0.1 -uroot -p

登录后执行

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;

论坛徽章:
0
5 [报告]
发表于 2013-04-26 14:54 |只看该作者
谢谢你的回复

不过,我执行过貌似跟你类似的语句,被拒绝了

见重新编辑的帖子的红色部分

是一个意思吗?


还请帮忙解释下,为什么,会出现这种问题,即授权被拒绝的问题

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
6 [报告]
发表于 2013-04-26 15:10 |只看该作者
登录后执行这个看看当前用户的权限,以及确认当前是哪个用户:
  1. show grants for current_user();
复制代码

论坛徽章:
0
7 [报告]
发表于 2013-04-26 15:14 |只看该作者
楼上的,

当前用户是 root@localhost  这个在当时出错时,通过 select user();查看的

至于,当时有哪些权限,。。。

由于捉急,已经删除数据目录,重建数据目录,重新初始化数据库权限表了


mysql_install_db  --data-dir=/data/3306/data   --user=mysql  #  这个语句是初始化授权表吗?


很想知道,之前,授权出错的原因

不知道这个错误啥时候又会复现,帮忙一下排查思路和解决方法

论坛徽章:
0
8 [报告]
发表于 2013-04-26 15:16 |只看该作者
不过,我上面的帖子中select了很多权限参数出来了,这是当时的环境

论坛徽章:
0
9 [报告]
发表于 2013-04-26 15:37 |只看该作者
尝试按当时操作步骤还原环境,未能还原。

当时操作步骤大概是:


用root登陆数据库之后,用 GRANT ALL  on  *.*  to 'root'@'localhost'; 删除了空用户 用的是drop user ''@'localhost';  又用delete同样做了一遍  delete from mysql.user where user is NULL;

再FLUSH PRIVILEGES;

再删除了rep用户 delete from mysql.user where user='rep';

之后,再用grant 重新给rep授权就出现授权错误了,

无论是给root授权  GRANT ALL  on  *.*  to 'root'@'localhost';

还是给rep授权都出错了

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52戌狗
日期:2013-12-27 15:08:11
10 [报告]
发表于 2013-04-26 16:09 |只看该作者
这里也发帖了呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP