如何在MySQL中使用root @ localhost权限运行?

时间:2011-05-04 14:54:36

标签: mysql privileges mysql-error-1044

我正在尝试运行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 

根@本地

ALL PRIVILEGES 

如果我理解正确,即使我已经在服务器上连接,MySQL也会处理我的陈述,就像我来自远程位置一样?

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

编辑#2 进入RDP后,我使用命令行登录MySQL。如果我运行select current_user(),我得到root@127.0.0.1。 my.ini文件中还包含skip_name_resolve。

1 个答案:

答案 0 :(得分: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提到您的hosts文件中有“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文件。