Не может вставить информацию в MySQL

Я пытаюсь вставить информацию локально в базу данных с, я программирую, который шифруется в Java, но я не способен. Мое предположение - то, что это так или иначе связано с полномочиями пользователя, даже при том, что я не знаю то, что я должен сделать кроме того, что я уже имею. Моей операционной системой является Ubuntu 14.04.05 LTS. Мои действия были следующие:

  1. Я открываю окно Command Line Interface и вхожу в MySQL через

    mysql -u root -p
    

Затем я ввожу в пароле для корня и проникаю внутрь.

  1. Я установил как data база данных, которая должна использоваться с

    use_data;

  2. Я создаю нового пользователя с

    CREATE USER 'user'@'localhost' IDENTIFIED BY 'passw';
    
  3. Я даю пользователю все требуемые полномочия для записи информации, независимо от IP, который использовался бы:

    GRANT USAGE ON * . * TO 'user'@'localhost' IDENTIFIED BY 'passw' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
    
    GRANT USAGE ON * . * TO 'user'@'%' IDENTIFIED BY 'passw' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
    
    GRANT USAGE ON * . * TO 'user'@'linux' IDENTIFIED BY 'passw' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
    
    GRANT ALL PRIVILEGES ON `data` . * TO 'user'@'localhost' WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON `data` . * TO 'user'@'%' WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON `data` . * TO 'user'@'linux' WITH GRANT OPTION;
    
  4. Я обновляю полномочия при помощи FLUSH PRIVILEGES;

  5. Все же, когда я пытаюсь получить доступ к базе данных для вставки информации, я получаю следующее исключение:

    Exception in thread "Thread-3" java.lang.StackOverflowError
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:270)
    

Кто-либо мог сказать мне, что я делаю неправильно для не получения соединения между моим кодом Java и базой данных?

ОБНОВЛЕНИЕ: часть кода, где исключение выдается, находится в методе getConnection, когда я пытаюсь получить доступ к базе данных.

@Override
    public void openDBConnection() throws Exception {
        //this method establish a database connection
        try {
            // This will load the MySQL driver, each DB has its own driver
            Class.forName(driver);

            String connection = "jdbc:mysql://" + host + "/" + dbname + "?"
                    + "user=" + user + "&password=" + passwd + "&useSSL=false"; 
            System.out.println(connection);

            // Setup the connection with the DB
            connect = DriverManager.getConnection("jdbc:mysql://" + host + "/" + dbname + "?"
                    + "user=" + user + "&password=" + passwd + "&useSSL=false");

        } catch (ClassNotFoundException | SQLException e) {
            throw e;
        } finally {
        }
    }
0
задан 12 March 2018 в 05:46

1 ответ

Полномочия, присвоенные через опцию GRANT, не должны СБРАСЫВАТЬ ПОЛНОМОЧИЯ вступить в силу - сервер MySQL заметит эти изменения и сразу перезагрузит таблицы предоставления.

ПОЭТОМУ дайте требуемые полномочия, и тест снова. не выполняйте "ПОЛНОМОЧИЯ СБРОСА";

При изменении таблиц предоставления непосредственно с помощью операторов тех, которые ВСТАВЛЯЮТ, ОБНОВЛЯЮТ или УДАЛЯЮТ, изменения не имеют никакого эффекта на полномочие, проверяющее до Вас, или перезапускают сервер или говорят этому перезагружать таблицы. Если Вы изменяете таблицы предоставления непосредственно, но забываете перезагружать их, Ваши изменения не имеют никакого эффекта, пока Вы не перезапускаете сервер. Это может оставить Вас задающийся вопросом, почему Ваши изменения, кажется, не имеют никакого значения! Чтобы сказать серверу перезагружать таблицы предоставления, выполните операцию полномочий сброса. Это может быть сделано путем делания заявления FLUSH PRIVILEGES или путем выполнения mysqladmin полномочий сброса или команды перезагрузки mysqladmin. Если Вы изменяете таблицы предоставления косвенно с помощью операторов ведения счетов, таких как ПРЕДОСТАВЛЕНИЕ, ОТМЕНЯЕТЕ, УСТАНАВЛИВАЕТЕ ПАРОЛЬ или ПЕРЕИМЕНОВЫВАЕТЕ ПОЛЬЗОВАТЕЛЯ, сервер замечает эти изменения и загружает таблицы предоставления в память снова сразу.

0
ответ дан 30 October 2019 в 07:00

Другие вопросы по тегам:

Похожие вопросы: