не удалось подключиться к mysql из спящего режима как администратор, используя mysqlworkbench - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь подключиться к Mysql через спящий режим.Я мог бы создать базу данных в mysqlworkbench как администратор, но при попытке подключения через hibernate я получаю следующую ошибку

ERROR: Access denied for user 'root'@'localhost' (using password: YES)
Initial sessionfactory creationfailedorg.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
Exception in thread "main" java.lang.ExceptionInInitializerError
    at hibernate.HibernateUtil.<clinit>(HibernateUtil.java:21)
    at hibernate.CustomerDAO.addCustomer(CustomerDAO.java:14)
    at hibernate.ClientDemo.main(ClientDemo.java:20)

Ниже приведен мой код hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:Mysql://127.0.0.1:3306/myschema</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">Hariharan@1604</property>
        <property name="show_sql">true</property>
        <mapping class="hibernate.Customer" />
    </session-factory>
</hibernate-configuration>

HibernateUtil.java

package hibernate;

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

public class HibernateUtil {
    private static final SessionFactory sessionFactory;
    static
    {
        try
        {
            Configuration cfg=new Configuration().configure("config/Hibernate.cfg.xml");
            ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
            sessionFactory=cfg.buildSessionFactory();
        }
        catch(Throwable ex)
        {
            System.err.println("Initial sessionfactory creationfailed"+ex);
            throw new ExceptionInInitializerError();
        }
    }
    public static SessionFactory getSessionFactory()
    {
        return sessionFactory;
    }

}

Icustomer.java

package hibernate;

public interface ICustomer {
    public void addCustomer(Customer custDAO);


}

CustomerDAO.java

package hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class CustomerDAO implements ICustomer
{

    @Override
    public void addCustomer(Customer custDAO) {
        // TODO Auto-generated method stub
        Session session=HibernateUtil.getSessionFactory().openSession();
        Transaction tx=session.beginTransaction();
        session.save(tx);
        tx.commit();
        session.close();

    }

}

Customer.java

package hibernate;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="CUSTOMER")
public class Customer {
    @Id

    private int customerId;
    private String customerName;

    public Customer()
    {}
    public int getCustomerId() {
        return customerId;
    }
    public void setCustomerId(int customerId) {
        this.customerId = customerId;
    }
    public String getCustomerName() {
        return customerName;
    }
    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }
}

ClientDemo.java

package hibernate;
import java.util.Scanner;
import org.hibernate.HibernateException;
public class ClientDemo {
    public static void main(String[] args) {
        CustomerDAO custdao=new CustomerDAO();
        try
        {
            System.out.println("Create");
            System.out.println("Enter the data");
            Scanner sc=new Scanner(System.in);
            System.out.println("ID");
            int id=sc.nextInt();
            System.out.println("Name");
            String str=sc.next();
            Customer cust=new Customer();
            cust.setCustomerId(id);
            cust.setCustomerName(str);
            custdao.addCustomer(cust);
            System.out.println("One record created");
            sc.close();

        }
        catch (HibernateException e) {
            // TODO: handle exception
            System.out.println(e);
        }
    }
}

Это мои данные соединения enter image description here

Скриншот базы данных enter image description here

Ответы [ 3 ]

0 голосов
/ 19 сентября 2018

Обратите внимание, что 127.0.0.1 отличается от localhost для схемы безопасности MySQL.

Попробуйте установить hibernate.connection.url для localhost или предоставить определенные привилегии, такие как (но не ограничиваясь).к этому примеру):

GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1';

0 голосов
/ 19 сентября 2018

Пользователь root не имеет привилегии.поэтому изменил разрешение по запросу ниже

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';

закрыл мое соединение и снова открыл.

0 голосов
/ 19 сентября 2018
 <property name="hibernate.connection.url">jdbc:Mysql://127.0.0.1:3306/myschema</property>

Кроме правильности имени пользователя и пароля, вы уверены, что ваша схема имеет имя myschema?Также большой M M ysql может быть проблемой.

...