Navicat鏈接mysql數據庫報錯:1045 - Access denied for user 'root'@'localhost' (using password: YES)。mysql
這是數據庫權限的問題,workbench等也會一樣報錯sql
問題所在:未給root用戶分配全部權限,本地客戶端無權限登陸root用戶。數據庫
以root用戶登陸mysql,運行show grants for 'user'@'IP';服務器
show grants for 'root'@'192.168.170.136'; ERROR 1141 (42000): There is no such grant defined for user 'root' on host '192.168.170.136' show grants for 'root'@'localhost'; +----------------------------------------------------------------------------------------------------------------------------------------+ | Grants for root@localhost | +----------------------------------------------------------------------------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' WITH GRANT OPTION | +----------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
經過上述兩個查詢語句的對比,說明root用戶只給了本地服務器的訪問權限,而沒有給192.168.170.136客戶端的訪問權限。code
也能夠經過查詢mysql的user表來查看用戶權限:get
select user,host from mysql.user; +-------+---------------+ | user | host | +-------+---------------+ | root | localhost | +-------+---------------+ 1 rows in set (0.00 sec)
說明root用戶只對localhost授予了訪問權限。class
解決方法:進行root用戶的遠程訪問受權,能夠受權到指定的客戶端IP,也能夠受權爲全部IP均可訪問(host值爲%):登錄
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; Query OK, 0 rows affected (0.00 sec) flush privileges; Query OK, 0 rows affected (0.00 sec)
select user,host,password from mysql.user; +-------+---------------+-------------------------------------------+ | user | host | password | +-------+---------------+-------------------------------------------+ | root | localhost | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | root | % | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | +-------+---------------+-------------------------------------------+ 2 rows in set (0.00 sec)
這樣就ok了。select