记录myeclipes远程连接mysql所出现的一个bug
今天在玩框架hibernate时,出现一个非常费解的bug,话不多说,先看bug
Access denied for user ‘root‘@‘localhost‘ (using password:YES)
然后各种搜百度,有些是说得修改密码,有些是说权限问题,这都怪本人着,非要在window系统下连接linux下的mysql(我的mysql数据库是装在虚拟机下的)
基于条件反射,我检查了下我的hibernate配置文件
<hibernate-configuration> <!-- 记住:先配置sessionFactory标签,一个数据库对应一个sessionFactory标签--> <session-factory> <!-- 必须配置的参数,4大参数,数据库的方言 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://192.168.174.130:3306/hibernate_day01</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <!-- 数据库的方言 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 可选配置 --> <!-- 映射配置文件 ,需要映入映射的配置文件--> <mapping resource="com/heima/domain/Customer.hbm.xml"/> </session-factory> </hibernate-configuration>
发现配置还是没有问题,那就可能就是权限问题
1.首先将新建的数据库为本地用户赋予权限
grant all privileges on hibernate_day01.* to root@192.168.174.130 identified by ‘root‘;
2.然后给账号开通外网所有权限
grant all privileges on hibernate_day01.* to ‘root‘@‘%‘ identified by ‘root‘;
当然其中的all可以指定一些权限,如限制增改查等,其ip地址因为是远程访问,我设定的是linux下的ip地址
3.使得以上权限生效
flush privileges;
4.测试连接
@Test public void testSave(){ /** * 1.先加载配置文件 * 2.创建sessionFactory对象,生成Session对象(会话) * 3.开启事务 * 5.编写保存的代码 * 6.提交事务 * 7.释放资源 */ //1.先加载配置文件 Configuration config=new Configuration(); //默认加载src目录下hibenate.cfg.xml的配置文件 config.configure(); //创建sessionFactory对象 SessionFactory factory=config.buildSessionFactory(); //创建session对象 Session session=factory.openSession(); //开启事务 Transaction tr=session.beginTransaction(); //编写保存的代码 Customer c=new Customer(); //c.setCust_id(cust_id); 主键是自动递增,不需要自己设置 c.setCust_name("测试"); c.setCust_level("2"); c.setCust_phone("110"); //保存数据,操作对象就相当于操作数据库的表结构 session.save(c); //提交事务 tr.commit(); //释放资源 session.close(); factory.close(); }
此时JUnit显示为绿色,表示操作成功
再看看数据库,数据已经插进表格中