MySql实现远程连接

安装完MySQL之后就没去配置了,然后每次都是使用local连接,今天做测试使用了IP地址,然后就又掉了链子,以前也遇到过,就是不长记性!!!!!

错误日志:

java.sql.SQLException: null,  message from server: "Host ‘duanwf‘ is not allowed to connect to this MySQL server"
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1128)
	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336)
	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
	at sun.reflect.GeneratedConstructorAccessor2.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
	at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
	at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
	at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
	at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
	at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
	at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
	at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
	at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
java.lang.NullPointerException
	at com.asinfo.dao.impl.SuperDao.update(SuperDao.java:113)
	at com.asinfo.dao.impl.FileDaoImpl.insert(FileDaoImpl.java:75)
	at com.asinfo.service.impl.FoundFileServiceImpl.foundFile(FoundFileServiceImpl.java:104)
	at com.asinfo.service.impl.FoundFileServiceImpl.foundFile(FoundFileServiceImpl.java:45)
	at com.asinfo.main.Main.main(Main.java:16)

    解决办法:开启MySQL的远程连接。

首先查询数据库用户:

use mysql;
select * from user;

可以看到只有本地连接权限。

开启MySQL的远程连接主要有三种方法:

一、授权使用固定IP

执行命令:

grant select,update,insert,delete on *.* to [email protected] identified by "root";

查询结果:

可以看到在user表中已经添加了root用户的IP连接权限。Host字段表示登录的主机,其值可以用IP,也可用主机名。

二、授权法

可以将Host字段的值改为%,表示在任何客户端机器上能以root用户登录到mysql服务器,建议在开发时设为%。将权限改为ALL PRIVILEGES,执行命令:

grant all privileges  on *.* to [email protected]‘%‘ identified by "root";

可以看到已经添加了对所有客户机都能访问的root账户。

三、直接改表

执行命令:

use mysql;
update user set Host = "%" where User = "root";

这样,所以客户机都能远程访问本机MySQL了。

时间: 2024-08-05 02:03:11

MySql实现远程连接的相关文章

MySQL开启远程连接的方法

原文地址 http://www.cnblogs.com/linjiqin/p/5270938.html 配置mysql允许远程连接的方法 默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/my.conf文件. 一.修改/etc/mysql/my.conf找到bind-address = 127.0.0.1这一行改为bind-address = 0.0.0.0即可 二.为需要远程登录的用户赋予权限1.新建用户远程连接mysql数据库grant all on

MySQL数据库远程连接开启方法

第一中方法:比较详细以下的文章主要介绍的是MySQL 数据库开启远程连接的时机操作流程,其实开启MySQL 数据库远程连接的实际操作步骤并不难,知识方法对错而已,今天我们要向大家描述的是MySQL 数据库开启远程连接的时机操作流程. 1.d:\MySQL\bin\>MySQL -h localhost -u root 这样应该可以进入MySQL服务器 复制代码代码如下: MySQL>update user set host = '%' where user = 'root'; MySQL>

mysql 打开远程连接

1.在控制台执行 mysql -u root -p mysql,系统提示输入数据库root用户的密码,输入完成后即进入mysql控制台,这个命令的第一个mysql是执行命令,第二个mysql是系统数据名称,不一样的. 2.在mysql控制台执行 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyPassword' WITH GRANT OPTION; 3.在mysql控制台执行命令中的 ‘root'@'%' 可以这样理解: ro

mysql允许远程连接

1. 3306端口是不是没有打开? 使用nestat命令查看3306端口状态: ~# netstat -an | grep 3306 tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN 从结果可以看出3306端口只是在IP 127.0.0.1上监听,所以拒绝了其他IP的访问. 解决方法:修改/etc/mysql/my.cnf文件.打开文件,找到下面内容: # Instead of skip-netw

mysql 开启远程连接指定的数据库

mysql 开启远程连接指定的数据库 grant all privileges on `my_db`.* to 'username'@'%' identified by 'passwod' WITH GRANT OPTION; FLUSH PRIVILEGES; FLUSH PRIVILEGES; my_db 表示要连接的数据库(提前建好) ,前面username这个是数据名字:后面passwod数据库密码

mysql 不能远程连接

不想浪费大家时间,我这文章记录了我在vagrant上架的mysql远程连接不上的问题,不过我在整理时发现这个下面这个链接,如果我一开始能找到这个我就不会绕那么多弯了.不想看我是怎么一步步调错过程的请直接看下面地址,我也将内容复制到了地址下面了.自己调试过程有点长,当记录吧,有兴趣的可以看下,也许对你有帮助 http://www.jb51.net/article/33813.htm vim /etc/my.cnf 注释这一行:bind-address=127.0.0.1 ==> #bind-add

mysql 授予远程连接直接访问

不通过ssh通道,mysql 授予远程连接直接访问 语句 GRANT ALL PRIVILEGES ON *.* TO [email protected]'%' IDENTIFIED BY '!DSJdg!' WITH GRANT OPTION; 后来revoke 一下,错误. 重新grant 出现错误. mysql> GRANT ALL PRIVILEGES ON *.* TO [email protected]'%' IDENTIFIED BY '!DSJdg!' WITH GRANT OP

[转]配置mysql允许远程连接的方法

配置mysql允许远程连接的方法 vim /etc/my.cnf注释这一行:bind-address=127.0.0.1 ==> #bind-address=127.0.0.1保存退出.mysql -uroot -p123456 为需要远程登录的用户赋予权限: 复制代码代码如下: mysql> GRANT ALL PRIVILEGES ON *.* TO [email protected]"%" IDENTIFIED BY "123456";mysql&

开启本地MySql数据库远程连接

做网站,要经常更新数据库,接触的数据库肯定都是mysql.有时候建站的时候因为数据库和网站放在不同的IP,这个时候就需要用程序进行mysql的远程连接,而mysql因为安全的因素,默认的时候用户设置的是不能远程连接,只能本地连接,这个时候就需要自己去修改其中的设置.下面小编就介绍一下操作方法. 进入cmd命令模式. mysql -h localhost-u mysql -p Enter password: ****** 连接数据库. mysql> use mysql; (此DB存放MySQL的各

Linux下开启MySQL的远程连接

Linux下开启MySQL的远程连接 基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限.下面是基本的步骤: 1.登录到mysql中,为root进行远程访问的授权,执行下面的命令: mysql> GRANT ALL PRIVILEGES ON *.* TO [email protected]"%" IDENTIFIED BY "root"; mysql> flush privileges; 第一句中"%