Consentire l'accesso root root mysql dell'utente Linux senza password


28

Su cPanel quando ho effettuato l'accesso come root e digito "mysql" senza nome host e password mi dà l'accesso diretto all'utente root di mysql.

Vorrei farlo per uno dei miei server non cpanel in cui l'utente root di Linux ottiene la password meno accesso all'utente root mysql allo stesso modo di cPanel.

È possibile ?

Risposte:


53

Il modo più semplice per farlo è utilizzare una sezione client del file ~ / .my.cnf e aggiungere lì le credenziali.

[client]
user=root
password=somepassword
...

è una buona idea rendere quel file leggibile solo da root.


1
Sì, funziona e questo è il modo in cui cPanel lo sta facendo
user1066991

9
Devo indicare un potenziale problema di sicurezza. Devi stare un po 'attento a non modificarlo nel modo in /etc/my.cnfcui il server mysql usa per fare il boot. Se si inserisce l'utente root mysql in /etc/my.cnfANYONE, è possibile utilizzare il server mysql con TUTTI i privilegi su OGNI database senza password. Iain punta verso l'utente della shell .my.cnfnella casa della radice, il che ovviamente è corretto.
Koen van der Rijt,

Cosa succede se non esiste un file ~ / .my.cnf? Se lo creo e riavvio mysqld, dovrei essere in grado di farlo?
Amalgovinus,

21

Per mysql 5.7+, se si imposta una password vuota per l'installazione iniziale, mysql utilizzerà automaticamente auth_socketcome strategia. Un tentativo di aggiornare la password senza modificare la strategia non avrà alcun risultato. Puoi sempre accedere senza usare la password se il tuo utente lo è root.

Soluzione Eseguire il comando seguente per modificare la strategia di autenticazione e impostare la password

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''

riferimento: https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/


3
Ho dovuto aggiungere una stringa vuota alla fine per farlo funzionare:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
kramer65

Intersting @kramer, funziona solo se l'ho impostato come te ... BY "";. Grazie!
Juan Antonio,

Sta cambiando passwiord in "ANY_PASSWORD" e non cancella la password. Per cancellare e accedere senza password, impostarlo su una stringa vuota.
Fernando Kosh,

7

A partire da MySQL 5.6.6, è possibile utilizzare mysql_config_editor per creare un file crittografato che accederà automaticamente:

mysql_config_editor set --login-path=client --host=localhost --user=root --password

Quindi inserire la password quando richiesto.

Nota: se la tua password contiene '#', e possibilmente altri caratteri, usa virgolette singole quando inserisci la password.


Puoi approfondire il commento a virgoletta singola? Ti sta chiedendo la password sul terminale, stai racchiudendo la password tra virgolette singole
user2299958

Sì, ho scoperto che inserendolo senza virgolette non funzionava se avesse caratteri speciali. Quindi, quando richiesto, inserisci '(virgoletta singola), quindi la password, quindi'.
Brian Deterling,

0

Crea un file con contiene solo la password di root mysql e solo root può leggere.

# ls -l /root/.mysqlpw 
-rw------- 1 root root 7 2013-08-19 13:24 /root/.mysqlpw

È possibile importare un database con

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase < databasedump.sql

oppure connettiti al tuo database ed emetti i comandi mysql

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20460
Server version: 5.1.63-0ubuntu0.10.04.1 (Ubuntu)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| yourdatabase       |
+--------------------+
3 rows in set (0.00 sec)

mysql> show tables;
...

5
Questo è molto più lavoro dell'altra risposta. E la tua password è troppo corta. :)
Michael Hampton

8
Non farlo. Mette la password sulla riga di comando che chiunque può leggere con ps(1)
Camh

Non è una buona idea
Fernando Kosh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.