无法将mariadb权限授予新用户,用户'root'@'localhost'的访问被拒绝(使用密码:是)

zi8p0yeb  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(225)

我正试图向一个新用户授予权限,却得到了拒绝访问的错误。我以前这样做过很多次,都没有问题,所以我非常困惑为什么现在会发生这种情况。
我这样登录mysql:

sudo mysql -u root -p

我提供了密码并顺利获得访问权限。
我创建用户时没有遇到任何问题:

CREATE USER 'root'@'newhost' IDENTIFIED BY 'password';

但是,在尝试授予权限时,我收到拒绝访问错误:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'newhost';
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

当我查看root@localhost的授权时,我得到以下内容:

| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `root`@`localhost` IDENTIFIED BY PASSWORD '*someencodedpassword' WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION

我使用的是MariaDB 10.6:

$ mysql --version
mysql  Ver 15.1 Distrib 10.6.5-MariaDB, for Linux (x86_64) using readline 5.1

我搜索并做了许多尝试,但没有通过这个问题。任何建议都不胜感激。
-- EDIT ---我能够成功授予这些权限:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON *.* TO `root`@`newhost`

但是,显然这些权限是不够的,因为我的应用程序仍然给我DB权限错误。而且,这并没有真正回答我的问题,为什么我不能给所有的权限,因为我在过去。
我的root@localhost授予权限中是否缺少了什么?
--编辑--
我能够通过将授权更改为以下内容来绕过我的应用程序错误:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON *.* TO 'root'@'newhost' IDENTIFIED BY 'password';

请注意IDENTIFIED BY '密码'
但是,我还是不确定为什么我不能全部授予。希望有人能回答这个问题。

2w2cym1i

2w2cym1i1#

root@localhostSHOW GRANTS方面枚举列表而不是显示GRANT ALL PRIVILEGES ON ...,这表明缺少权限。
通过创建一个新用户,删除一个任意权限,并将其SHOW GRANTS与您拥有的root@localhost权限进行比较,就会发现缺少一个DELETE HISTORY权限,这就是GRANT ALL无法工作的原因。

相关问题