mysql workbench连接不上远程数据库,xshell无法连接远程主机的问题
2016-11-28 13:13
465 查看
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,然后就可以使用刚才重建的用户连接数据库了。
最近使用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,然后就可以使用刚才重建的用户连接数据库了。
相关文章推荐
- eclipse调试远程主机node.js无法连接的问题
- mysql远程无法连接数据库的问题
- 最近在配mysql和web分离的服务器时所出现的phpmyadmin无法连接远程数据库问题
- 解决SQL Server管理器无法连接远程数据库的问题(转)
- 解决SQL Server管理器无法连接远程数据库的问题
- 关于在英创em9161板上使用ADO.net连接远程数据库提示 “无法找到 PInvoke dll"dbnetlib.dll"”问题解决方法
- 【数据库】LNMP一键包安装后解决MySQL无法远程连接问题
- 解决SQL Server管理器无法连接远程数据库的问题
- plsql连接本地oracle数据库,而远程主机却无法连接,出现无监听程序的解决方法
- Mysql 连接远程Linux主机无法连接 10061问题
- 解决SQL Server管理器无法连接远程数据库的问题
- 远程无法连接数据库的问题
- Linux中无法远程连接数据库问题的解决方法
- 解决"System.AccessViolationException”类型的未经处理的异常在 未知模块(IIS Worker Process 已停止工作)导致无法连接远程数据库的问题
- [解决方案]解决SQL Server管理器无法连接远程数据库的问题
- 解决SQL Server管理器无法连接远程数据库的问题
- jboss 的一些配置(端口,虚拟目录,虚拟主机,中文问题,数据库连接)
- 解决 web服务器部署常见问题,server application unavailable 和 程序无法连接数据库 的问题(asp.net 2.0 + oracle9i + winXP)
- 问题集锦13:数据库升级后,程序无法连接数据库
- 请单击下面的按钮,以重定向到可以选择新数据存储区的页。下面的消息可能会有助于诊断问题: 无法连接到 SQL Server 数据库。