2011-05-04 85 views
2

我試圖運行一個GRANT ALL聲明:我如何在MySQL中以root @ localhost權限運行?

GRANT ALL ON daisyrepository.* TO [email protected] 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正在處理我的聲明,就像我是從遠程位置來的N +

編輯#1 Clafification:我連接的服務器是MySQL也在運行的地方。

編輯#2 進入RDP後,我使用命令行登錄到MySQL。如果我運行select current_user(),我會得到[email protected]。 my.ini文件中也有skip_name_resolve。

+0

其中是mysql服務器?在本地主機上?我的意思是,在同一臺機器上? – jotapdiez 2011-05-04 15:00:02

+0

是的,我正在使用遠程桌面到運行MySQL的服務器。 – TekiusFanatikus 2011-05-04 15:59:34

+0

如果您嘗試以root身份執行此操作,會發生什麼情況:'將*。*全部授予根'@ root_password'所標識的root @ localhost;'(請確保您輸入正確的密碼) – 2011-05-04 16:02:43

回答

4

您似乎總是通過TCP連接(而不是Linux上的Unix套接字或Windows上的命名管道)。由於您的ini文件中有skip_name_resolve,因此服務器不會將DNS 127.0.0.1的DNS反向返回到本地主機,因此您顯示爲[email protected]的用戶不是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文件。

+0

這是否意味着我將擁有3組權限:%,127.0.0.1和localhost?這是規範嗎?我應該運行沒有skip_name_resolved? – TekiusFanatikus 2011-05-09 11:43:17

+0

--skip-name-resolve:在檢查客戶端連接時不要解析主機名。只使用IP地址。如果使用此選項,授予表中的所有主機列值必須爲IP地址或本地主機。我覺得我應該嘗試調查爲什麼我不能使用命名管道進行連接? – TekiusFanatikus 2011-05-09 12:26:25

+0

@TekiusFanatikus我通常不會有'root'@'%'。如果其他服務器需要連接,請讓特定用戶擁有鎖定的權限。 'root'@'localhost'我們傾向於離開(只要它有一個強密碼),因爲如果出現任何錯誤,它是默認的方式。 'root'@'127.0.0.1'僅在您選擇保留skip_name_resolve時才需要。我們已經使用和沒有服務器。解決ips意味着我們可以將客戶端服務器移動到其他ips,而無需更新權限,但是如果本地DNS服務器存在問題,可以阻止某些連接。 – JohnC 2011-05-09 12:31:29