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,然后就可以使用刚才重建的用户连接数据库了。