今天用Navicat訪問虛擬機上的mysql,無法訪問報cannot connect(10038)。
首先看是否可以telnet,本機cmd,telnet 192.168.209.128 3306,結果是連接失敗,
再到虛擬機上確認 netstat -anp ,發現 “tcp 0 0 127.0.0.0:3306 0.0.0.0:* LISTEN”
(LocalAddress中: 0.0.0.0 表示監聽本地所有ip地址,其他電腦是可以訪問的,並且修改ip不受影響。 127.0.0.1 表示只監聽本機回環地址,只能本機訪問。 x.x.x.x ip地址,是只監聽這個ip。修改ip后程序就不能監聽了。需要手動修改軟件監聽地址才可以用)
這里LocalAddress為127.0.0.0,說明是這里的問題。
於是乎,到/etc/mysql/mysql.conf.d,修改mysqld.cnf中的 bind-address = 127.0.0.1
to bind-address = 0.0.0.0
問題得到解決。
之后,只用root可以登錄,但普通用戶登錄 Access denied for user 'shopsys'@'192.168.8.123' (using password: YES)
分別查看權限:
show grants for 'root'@'%';
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*E995D71A1F13CCE285E250B75338A9B93FE48C9B' WITH GRANT OPTION |
show grants for 'shopsys'@'%';
| GRANT USAGE ON *.* TO 'shopsys'@'%' |
| GRANT ALL PRIVILEGES ON `shopsys`.* TO 'shopsys'@'%' |
對比可見,普通用戶沒有identified....
進行授權操作:GRANT ALL PRIVILEGES ON *.* TO'shopsys'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
隨后可以正常訪問。再查權限時,已變成:
| GRANT ALL PRIVILEGES ON *.* TO 'shopsys'@'%' IDENTIFIED BY PASSWORD '*84AAC12F54AB666ECFC2A83C676908C8BBC381B1' WITH GRANT OPTION |
| GRANT ALL PRIVILEGES ON `shopsys`.* TO 'shopsys'@'%' |
參考:http://www.cnblogs.com/cnblogsfans/archive/2009/09/21/1570942.html
歡迎關注公眾號,了解更多信息