1.在登录打开MySQL后:
输入:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY'远程连接的密码' WITH GRANT OPTION;
上面的命令中%代表从任何主机都可连接MySQL服务器。
然后使用命令刷新
FLUSH PRIVILEGES
首先要确定Java中的连接代码有没有错误
package database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class ALiyun {
static final String URL = "jdbc:mysql://121.195.147.152:3306/abc?useUnicode=true&charcterEncoding=utf-8"; //(121.195.147.152)公网IP地址
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
// 数据库的用户名与密码,需要根据自己的设置
static final String NAME = "root";
static final String PWD = "123";//该密码是你在数据库中设置的连接密码
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);
// 连接数据库
conn = DriverManager.getConnection(URL,NAME,PWD);
System.out.println("连接数据库成功");
// 执行查询
conn.close();
}catch(Exception e1){
e1.printStackTrace();
}finally{
// 关闭资源
try{
if(stmt!=null) stmt.close();
if(conn!=null) conn.close();
}catch(Exception e2){
e2.printStackTrace();
}
}
}}
2、查看连接mysql时间有关的系统变量:show variables like '%timeout%'
是否如图所示
1)interactive_timeout:
参数含义:服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。
参数默认值:28800秒(8小时)
(2)wait_timeout:
参数含义:服务器关闭非交互连接之前等待活动的秒数。
在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()
的连接选项CLIENT_INTERACTIVE定义)。
参数默认值:28800秒(8小时)
进行修改:
修改MySQL的参数,wait_timeout最大为31536000即1年,在my.cnf中加入:
wait_timeout=31536000
interactive_timeout=31536000
重启生效,需要同时修改这两个参数。
使用命令进行修改:
vim /etc/my.cnf
按a进入输入模式,按ESC退出输入模式,然后按冒号键 :wq(保存并退出)
使用命令查看是否修改成功:
cat /etc/my.cnf
这里已经更改完成。
最后记得重启下服务器再进行连接,不然可能连接不成功。