2

我正在尝试运行 GRANT ALL 语句:

GRANT ALL ON daisyrepository.* TO daisy@localhost IDENTIFIED BY 'password_here';

我已经使用远程桌面在服务器本身上运行了这个语句,使用:

  • PHPMyAdmin
  • MySQL 管理员
  • 命令行客户端

每次运行此语句时,都会出现以下错误:

ERROR 1044 (42000): Access denied for user 'root'@'%' to database 'daisyrepository'

关于特权的一些信息:

根@%

SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, REPLICATION SLAVE, REPLICATION CLIENT, EXECUTE 

根@localhost

ALL PRIVILEGES 

如果我理解正确,即使我已连接到服务器,MySQL 是否会将我的语句视为来自远程位置?

编辑#1 Clafification:我连接的服务器也是 MySQL 运行的地方。

编辑 #2 在 RDP 中,我使用命令行登录 MySQL。如果我运行 select current_user(),我会得到 root@127.0.0.1。my.ini 文件中也有skip_name_resolve。

4

1 回答 1

4

您似乎总是通过 TCP 连接(而不是 Linux 上的 Unix 套接字或 Windows 上的命名管道)。因为您的 ini 文件中有 skip_name_resolve,服务器不会将 ip 127.0.0.1 反向 DNS 回 localhost,因此您显示的用户是 root@127.0.0.1,而不是 root@localhost。

如果可以,请从 ini 文件中删除 skip_name_resolve 并确保 Abe Petrillo 提到您的主机文件中有“127.0.0.1 localhost”。这应该允许您以 root@localhost 身份连接。如果您需要放回skip_name_resolve,请确保您运行,

GRANT ALL on *.* to 'root'@'127.0.0.1' identified by '$roots_password' WITH GRANT OPTION;

这应该允许您将 skip_name_resolve 添加回您的 ini 文件。

于 2011-05-06T15:49:43.163 回答