重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在安装完虚拟机环境,并安装好mysql-server后,开启mysql(开启sql服务器可以用 /etc/init.d/mysql [start|stop])服务后,发现在本机用sqlyog(连接mysql图形工具)连接不上。
创新互联是一家专注于成都网站设计、成都网站建设与策划设计,江川网站建设哪家好?创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:江川等地区。江川做网站价格咨询:18980820575
需要执行以下步骤确保可以连接。
1、root账号登进sql
root@ubuntu:# mysql -uroot -p
2、为mysql设置远程访问权限
mysql grant all PRIVILEGES on *.* to 'root'@'%' identified by 'password';
3、给iptables中添加规则,使得mysql的3306端口可以被访问到
root@ubuntu:# iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
执行此行命令时会报:iptables v1.4.21: can't initialize iptables table `filter': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.报这个错没关系,按照第4部操作即可
4、最关键的步骤,把 /etc/mysql/my.cnf 文件里面的bind-address 修改了,默认是127.0.0.1(即默认只允许Ubantu本机连接),修改为0.0.0.0即可允许外部连接MySQL。
Final: 这样再用SQLyog(各种sql连接工具),连接成功!
ps:如果设置好后,仍然连不上,可以查看网络连接信息
root@ubuntu:# netstat -an |grep 3306
String url="jdbc:mysql://localhost:3306/sample_db?user=rootpassword=your_password";
例如:
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
public class MysqlDemo {
public static void main(String[] args) throws Exception {
Connection conn = null;
String sql;
// MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
// 避免中文乱码要指定useUnicode和characterEncoding
// 执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定,
// 下面语句之前就要先创建javademo数据库
String url = "jdbc:mysql://localhost:3306/javademo?"
+ "user=rootpassword=rootuseUnicode=truecharacterEncoding=UTF8";
try {
// 之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来,
// 可以通过Class.forName把它加载进去,也可以通过初始化来驱动起来,下面三种形式都可以
Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动
// or:
// com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
// or:
// new com.mysql.jdbc.Driver();
System.out.println("成功加载MySQL驱动程序");
// 一个Connection代表一个数据库连接
conn = DriverManager.getConnection(url);
// Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等
Statement stmt = conn.createStatement();
sql = "create table student(NO char(20),name varchar(20),primary key(NO))";
int result = stmt.executeUpdate(sql);// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功
if (result != -1) {
System.out.println("创建数据表成功");
sql = "insert into student(NO,name) values('2012001','陶伟基')";
result = stmt.executeUpdate(sql);
sql = "insert into student(NO,name) values('2012002','周小俊')";
result = stmt.executeUpdate(sql);
sql = "select * from student";
ResultSet rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值
System.out.println("学号\t姓名");
while (rs.next()) {
System.out
.println(rs.getString(1) + "\t" + rs.getString(2));// 入如果返回的是int类型可以用getInt()
}
}
} catch (SQLException e) {
System.out.println("MySQL操作错误");
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
conn.close();
}
}
}
第一个是已保存的会话,如果有的话可以的话,最好写一个唯一标识,如主机的IP,以便以后可以调用
第二个是让你写入主机的IP/域名,如:localhost 后面的端口号一般都是选择默认的3306
第三个是让你写入你的mysql的用户名,如root
第四个是让你填写你的mysql的密码,因mysql支持空密码安装,所以有些人的这个不用填
连接代码如下:
public static void main(String[] args){
// 驱动程序名
String driver = "com.mysql.jdbc.Driver";
// URL指向要访问的数据库名scutcs
String url = "jdbc:mysql://127.0.0.1:3306/scutcs";
// MySQL配置时的用户名
String user = "root";
// MySQL配置时的密码
String password = "root";
try {
// 加载驱动程序
Class.forName(driver);
// 连续数据库
Connection conn = DriverManager.getConnection(url, user, password);
if(!conn.isClosed())
System.out.println("Succeeded connecting to the Database!");
// statement用来执行SQL语句
Statement statement = conn.createStatement();
// 要执行的SQL语句
String sql = "select * from student";
// 结果集
ResultSet rs = statement.executeQuery(sql);
System.out.println("-----------------");
System.out.println("执行结果如下所示:");
System.out.println("-----------------");
System.out.println(" 学号" + "\t" + " 姓名");
System.out.println("-----------------");
String name = null;
while(rs.next()) {
// 选择sname这列数据
name = rs.getString("sname");
// 首先使用ISO-8859-1字符集将name解码为字节序列并将结果存储新的字节数组中。
// 然后使用GB2312字符集解码指定的字节数组
name = new String(name.getBytes("ISO-8859-1"),"GB2312");
// 输出结果
System.out.println(rs.getString("sno") + "\t" + name);
}
rs.close();
conn.close();
} catch(ClassNotFoundException e) {
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
} catch(SQLException e) {
e.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
这样:
jdbc:mysql://hostname[:3306]/dbname
jdbc:mysql://localhost:3306/db_librarySys
Connection conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/db_librarySys?user=rootpassword=1234");
Connection conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/db_librarySys", "root", "1234");
扩展资料:
注意事项
URL=协议名+子协议名+数据源名。
1、协议名总是“jdbc”。
2、子协议名由JDBC驱动程序的编写者决定。
3、数据源名也可能包含用户与口令等信息;这些信息也可单独提供。
URL:jdbc:oracle:thin:@machine_name:port:dbname
注:machine_name:数据库所在的机器的名称;
port:端口号,默认是1521
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl为数据库的SID
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,user,password);
注意:Oracle的URL有两种写法:
1、jdbc:oracle:thin:@localhost:1521:databaseName 常用操作sql的工具:sqlDeveloper.exe,还可以用其他数据库,如mysql等
2、jdbc:oracle:oci:@localhost:1521:databaseName 用来操作SQL的工具只能用:PL/SQL Developer;数据库集群时候常用此连接,比上面那个多点功能,性能好点。
jdbc:mysql://localhost:3306:test这句里面分如下解析:\x0d\x0ajdbc:mysql:// 是指JDBC连接方式;\x0d\x0alocalhost: 是指你的本机地址;\x0d\x0a3306 SQL数据库的端口号;\x0d\x0atest 就是你要连接的数据库的地址。\x0d\x0a谢谢采纳!!!