MySql access denied for user錯誤
方法/步驟
-
MySql遠程連接時的“access denied for user **@**”錯誤,搞的我很頭大,后來查出來解決方法。記錄一下,怕以后再忘記:
-
首先本地登陸MySQL,然后執行這兩句代碼:GRANT ALL PRIVILEGES ON *.* TO root@’%’ IDENTIFIED BY ’000000′;FLUSH PRIVILEGES;格式:grant 權限 on 數據庫名.表名 用戶@登錄主機 identified by “用戶密碼”;
-
參數說明: ALL PRIVILEGES表示賦給遠程登錄用戶的權限,ALL PRIVILEGES表示所有的權限,你也可以單獨或組合賦select,update,insert,delete權限;*.*:第一個*表示要賦權的數據庫名,*當然表示全部數據庫了,第二個*表示數據庫下的表名,同理,*表示全部表,像我這樣的懶人當然就直接用*.*了,反正都是自己開發用
-
root表示要賦權的用戶;%表示遠程登錄的IP,如果要限制登錄IP的話,這里就添你允許登錄的IP,比如192.18.1.99等,%表示不限制IP(再次偷懶),000000是用戶遠程登錄的密碼。就這么簡單。這句運行以后再運行FLUSH PRIVILEGES,搞定!
不是提示了么:不是自己開的服務端不能連接。
試着用mysql的命令行連接一下,根據相關的提示進行處理。一般要開放所需要的端口,設置用戶的遠程連接權限就可以連接了。如果命令行可以連接,工具應該也是可以的。
如果只是為了管理數據庫,可以裝個web的管理放服務器,也挺方便的。
追問
服務端是我自己的 數據庫密碼正常 就是外在用工具連接不上 如果設置端口對外開放? 設置用戶遠程連接權限?
追答
用命令行連接的方法可以參照下面這個方法:
新使用MySQL,說起來是個簡單的事情,但是卻費了些周折:
1、登陸服務器端,進入命令行,windows cmd;
2、設置用戶、密碼讓指定的IP訪問:mysql -u root -p 或安裝的快捷方式進入:MySQL Command Line Client,使用grant命令:
grant 權限1,權限2,…權限n on 數據庫名稱.表名稱 to 用戶名@用戶地址 identified by '連接口令';
例子:
mysql>grant select,insert,update,delete,create,drop on mydb.mytable to lzpddd@192.168.1.88 identified by 'mypassword';
給來自192.168.1.88的用戶lzpddd分配可對數據庫 mydb的mytable表進行select,insert,update,delete,create,drop等操作的權限,並設定口令為'mypassword';
mysql>grant all privileges on *.* to lzpddd@192.168.1.88 identified by 'mypassword';
給來自192.168.1.88的用戶lzpddd分配可對所有數據庫的所有表進行所有操作的權限限,並設定口令為'mypassword';
mysql>grant all privileges on *.* to lzpddd@'%' identified by 'mypassword';
給來自任何IP地址的用戶lzpddd分配可對所有數據庫的所有表進行所有操作的權限限,並設定口令為'mypassword';
3、關閉服務器端防火牆或者開放3306端口(很重要);
(自己在防火牆,或是操作系統相關的地方進行設置。)
4、客戶端連接:
進入命令行,windows cmd,連接:
mysql -u 用戶名 -p密碼 -h 服務器IP地址 -P 服務器端MySQL端口號 -D 數據庫名
注意:
(1)服務器端口標志-P一定要大些以區別於用戶-p,如果直接連接數據庫標志-D也要大寫;
(2)如果要直接輸入密碼-p后面不能留有空格如-pmypassword;
(3)命令結束段沒有';'分號。
例子:
mysql -u lzpddd -pmypassword -h 192.168.1.88 -P 3306 -D mydb