Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [MySQL] Modifica password utente root (era: [Java Sping Boot] java.sql.SQLException: Access denied for user 'root'@'localhost')

    Buongiorno, nonostante abbia impostato correttamente l'user e la password vien restituito questo errore:

    java.sql.SQLException: Access denied for user 'root'@'localhost'





    apllication.properties:

    codice:
    #server.port=10000
    # Data Source properties
    spring.datasource.url=jdbc:mysql://localhost:3306/grafici?useSSL=false
    spring.datasource.username=root
    spring.datasource.password=my_password
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    
    # JPA properties 
    spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
    spring.jpa.show-sql=true
    # Hibernate ddl auto (create, create-drop, validate, update)
    spring.jpa.hibernate.ddl-auto = update
    Io ho creato il DB grafici nel database MySql attrtaverso il phpMyAdmin.

    Altri errori iniziali sono:

    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLExc eption(SQLError.java:129) ~[mysql-connector-j-8.0.31.jar:8.0.31]
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping. translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.0.31.jar:8.0.31]
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(Conne ctionImpl.java:828) ~[mysql-connector-j-8.0.31.jar:8.0.31]
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(Connection Impl.java:448) ~[mysql-connector-j-8.0.31.jar:8.0.31]
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(Conne ctionImpl.java:241) ~[mysql-connector-j-8.0.31.jar:8.0.31]

    Nel pom, le dipendenze:


    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    </dependency>


    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>


    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>


    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    </dependency>
    <dependency>


    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
    </dependency>

    <dependency>


    <groupId>org.openjdk.nashorn</groupId>
    <artifactId>nashorn-core</artifactId>
    <version>15.4</version>
    </dependency>


    <dependency>


    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>





    <dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>

    </dependency>



    </dependencies>







    jabjoint

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    MySQL funziona così: per ciascun utente è prevista la possibilità di loggarsi da N macchine diverse. Quindi, per poter accedere con un utente da una particolare macchina vi sono 2 possibilità:

    1) Definisci un utente 'nome'@'macchina' al quale dai accesso con una password e garantisci determinati permessi
    2) Definisci un utente 'nome'@'%' al quale dai accesso con una password e garantisci determinati permessi.

    La soluzione 1 dà accesso all'utente 'nome' dalla macchina 'macchina' (può essere un IP o un nome host)
    La soluzione 2 dà accesso all'utente 'nome' da qualunque macchina.

    Verifica che ci sia un utente 'root'@'localhost' (o 'root'@'%') al quale hai dato i permessi di accesso con quella password perchè il messaggio è chiaro e inequivocabile: l'utente root non può accedere a mysql da 'localhost'.

    PS: evita di usare l'utente root... crea un utente dedicato al quale dai tutti i permessi.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    MySQL funziona cos�: per ciascun utente � prevista la possibilit� di loggarsi da N macchine diverse. Quindi, per poter accedere con un utente da una particolare macchina vi sono 2 possibilit�:

    1) Definisci un utente 'nome'@'macchina' al quale dai accesso con una password e garantisci determinati permessi
    2) Definisci un utente 'nome'@'%' al quale dai accesso con una password e garantisci determinati permessi.

    La soluzione 1 d� accesso all'utente 'nome' dalla macchina 'macchina' (pu� essere un IP o un nome host)
    La soluzione 2 d� accesso all'utente 'nome' da qualunque macchina.

    Verifica che ci sia un utente 'root'@'localhost' (o 'root'@'%') al quale hai dato i permessi di accesso con quella password perch� il messaggio � chiaro e inequivocabile: l'utente root non pu� accedere a mysql da 'localhost'.

    PS: evita di usare l'utente root... crea un utente dedicato al quale dai tutti i permessi.
    Da linea di comando(ubuntu), inserendo nel terminale:

    sudo mysql -u root

    Accede in automatico, chiedendo la password del utente collegato ad ubuntu, senza richiedere quella di MySql.

    Tuttavia da terminale ho impostato in MySql la password di root.
    jabjoint

  4. #4
    Forse è preimpostato l'accesso da qualsiasi macchina ed è occupato già l'indirizzo? Ipotesi...?
    jabjoint

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Potrei sbagliarmi, ma se accede senza chiedere la password di MySQL significa che l'utente root su MySQL è senza password... altrimenti non accedi.
    Per accedere avresti bisogno di aggiungere l'opzione "-p" (che chiede, appunto, la password).

    Mi spiego meglio. Il seguente comando:
    codice:
    $sudo mysql -u root -p

    deve chiedere 2 password: una da parte di "sudo" per eseguire il comando con privilegi elevati e una da parte di "mysql" per l'accesso al DB.

    Se l'utente root su MySQL ha una password impostata, il seguente comando:
    codice:
    $sudo mysql -u root

    dovrebbe chiedere una password (sudo) e poi andare in errore.
    Ultima modifica di LeleFT; 13-01-2023 a 19:18
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Accede con qualsiasi password, si, ho testato con sudo mysql -u root - p password_casuale

    Il che è strano...anche perché Spring non riesce ad accedere ridando l'errore con qualsiasi password...

    Inoltre inviai il comando SET PASSWORD in MYSQL...

    Il chè può voler dire che se è connesso già un utente non fa accedere un secondo?
    jabjoint

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Il comando -p NON VUOLE la password dopo... quello che metti dopo viene interpretato come nome del DB a cui connettersi.
    Se non specifichi -p e l'utente ha una password, mi aspetto questo errore:

    codice:
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password NO)

    Se non hai questo errore, significa che l'utente root è senza password.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Si non da errore, dunque la password non era stata inserita, semplicemente non me ne ero accorto perché il comando:

    SET PASSWORD FOR root@'localhost' = 'password';

    non era terminato col " ; " in fase di digitazione, tuttavia restituisce un errore inserendo il punto e virgola richiesto:

    ERROR 4102 (HY000): SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.

    PS:


    mysql -u root, da quell'errore(specificato da te) se non è preceduto da sudo.

    Da qui, anche seguendo questi passi(link sotto), non cambia la password:

    https://wiki.ubuntu-it.org/Server/MySql/PasswordReset

    my_user@MACCHINA:~/Scrivania$ sudo /etc/init.d/mysql stop

    Stopping mysql (via systemctl): mysql.service.

    my_user@MACCHINA:~/Scrivania$ /usr/sbin/mysqld --skip-grant-tables --user=root

    2023-01-13T17:42:00.130718Z 0 [Warning] [MY-010143] [Server] Ignoring user change to 'root' because the user was set to 'mysql' earlier on the command line
    2023-01-13T17:42:00.130911Z 0 [Warning] [MY-010091] [Server] Can't create test file /var/lib/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
    2023-01-13T17:42:00.131202Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.31-0ubuntu0.20.04.2) starting as process 11650
    2023-01-13T17:42:00.168108Z 0 [Warning] [MY-010091] [Server] Can't create test file /var/lib/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
    2023-01-13T17:42:00.168156Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
    2023-01-13T17:42:00.168910Z 0 [Warning] [MY-010122] [Server] One can only use the --user switch if running as root
    2023-01-13T17:42:00.168962Z 0 [ERROR] [MY-013276] [Server] Failed to set datadir to '/var/lib/mysql/' (OS errno: 13 - Permission denied)
    2023-01-13T17:42:00.169263Z 0 [ERROR] [MY-010119] [Server] Aborting
    2023-01-13T17:42:00.169618Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.31-0ubuntu0.20.04.2) (Ubuntu).

    my_user@MACCHINA:~/Scrivania$ sudo systemctl start mysql
    my_user@MACCHINA:~/Scrivania$ mysql -u root

    ERROR 1698 (28000): Access denied for user 'root'@'localhost'

    my_user@MACCHINA:~/Scrivania$
    Ultima modifica di jabjoint; 13-01-2023 a 19:49
    jabjoint

  9. #9
    Anche con la seconda procedura, fallisce il cambio password:

    mysqladmin: connect to server at 'localhost' failed
    error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
    Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
    jabjoint

  10. #10
    In sostanza l'utente root ha la password MA accedendo con sudo a mysql NON la richiede.

    Ma io non la conosco, forse più, e NON sono in grado di cambiarla con i due procedimenti proposti dal forum Ubuntu.
    Ultima modifica di jabjoint; 13-01-2023 a 20:18
    jabjoint

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.