1.先說xshell無法連接的問題
最近使用virtualbox裝了個ubuntu-16.04,然后在win7上使用xshell連接,首先確認win7能ping通虛擬機ip。然后確認是否安裝了openssh,用命令:ps -ef |grep ssh ,發現沒有安裝,那就安裝唄,沒啥說的,使用命令:apt-get install openssh-server安裝。
安裝完之后用xshell連接,結果提示:SSH服務拒絕了密碼。請再試一次,如圖:

我使用root登錄,密碼也沒錯啊?原來是ssh默認不允許root用戶登錄。咋辦?於是改配置文件:
vim /etc/ssh/sshd-config,找到如下一行:

如圖,把PermitRootLogin這一項后面的“prohibit-password”改為:“yes”,重啟ssh服務,然后回到Xshell繼續使用root登錄,成功。
注意:如果不改這個,使用非root是可以用xshell登錄的。
2.說說mysqlworkbench無法連接的問題。
首先首先我的環境:ubuntu10.04+mysql5.7+mysql workbench
我的報錯提示是這樣的:
“Failed to connect to mysql at ***:3306 with user **,cann't connect to mysql server on *** (10061)”,如圖:

注意看最后的10061,這個就是拒絕連接的錯誤碼。
修改如下文件:vim /etc/mysql/mysql.conf.d/mysqld.cnf

找到“bind-address”這一項,可以看到默認只能在本地登錄,把這一項注釋掉,重啟mysql,再試着連接,
結果又報錯,
Access denied for user 'root'@***(using pasword:YES),如下:

這個我也不懂了,好在找到了資料,意思是,現在雖然mysql允許遠程連接了,但是root用戶還沒有遠程連接的權限,咋辦呢?
創建一個新用戶,並賦予它遠程連接的權限:
1)登陸mysql
2)創建遠程登陸用戶並授權,在要鏈接的服務器上操作
mysql> grant all PRIVILEGES on *.* to 'username'@'xxx.xxx.xx.x' identified by 'password' WITH GRANT OPTION;
上面的語句表示將所有數據庫的所有表的所有權限授權給 username 這個用戶,允許 username 用戶在 xxx.xxx.xx.x 這個 IP 進行遠程登陸,並設置 username 用戶的密碼為 password。
分析參數:
all PRIVILEGES 表示賦予所有的權限給指定用戶,這里也可以替換為賦予某一具體的權限,例如:select,insert,update,delete,create,drop 等,具體權限間用“,”半角逗號分隔。
*.* 表示上面的權限是針對於哪個表的,第一個*指的是數據庫名稱,后面的 * 表示對於所有的表,由此可以推理出:對於某一數據庫的全部表授權為“數據庫名.*”,對於某一數據庫的某一表授權為“數據庫名.表名”。
username表示你要給哪個用戶授權,這個用戶可以是存在的用戶,也可以是不存在的用戶。
xxx.xxx.xx.x 表示允許遠程連接的 IP 地址,你的IP,如果想不限制鏈接的 IP 則設置為“%”即可。
password 為用戶username的密碼。
接着執行如下語句是設置生效
Mysql> flush privileges
最后重啟mysql,然后就可以使用剛才重建的用戶連接數據庫了。
