2016-08-28 4 views
2

i war MariaDB 10.1 in Ubuntu16.04LTSMariaDB installieren in Ubuntu 16.04

ich diesen Code verwenden, installieren.

sudo apt-get install mariadb-server

installieren ist Erfolg, aber wenn ich zu MariaDB verbinden, ist es nicht das Kennwort benötigen!

Ich wurde dies versuchen. aber das alles funktioniert nicht.

  1. Ich verwende mysql_secure_installation Befehl und fertige Konfiguration erfolgreich. aber es braucht immer noch kein Passwort.
  2. SET PASSWORD FOR 'root'@'%' = PASSWORD('newpass'); und flush privilege
  3. Update Benutzer eingestellt password = Passwort ('newpass'), wo user = 'root';

Ich möchte Passwort verwenden. was soll ich machen?

+0

'SELECT Benutzer, Host, Passwort FROM mysql.user;' - kann Hinweis geben, was falsch ist. –

+0

Sieht aus wie das gleiche Problem wie dieses: http://StackOverflow.com/a/30417831/6451083 MariaDB 10.0.17 kann nicht auf Root mit Nicht-Root-Benutzer zugreifen. – ludofet

Antwort

2

Meine Antwort auf "Ich möchte Passwort verwenden. Was soll ich tun?" ist:

"Nein, wahrscheinlich nicht!" (je nach Einsatz der App - siehe Kommentare unten)

Mit Ubuntu 15.10 und später installiert MariaDB mit dem unix_socket Benutzer-Authentifizierungs-Plug standardmäßig aktiviert: https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/

Mit einem frischen installieren Login mit sudo mysql -uroot und ausführen:

SELECT User, Password, Host, plugin from mysql.user WHERE user = 'root'; 

Sie sollten einen einzelnen Benutzer sehen. Dies bedeutet auch, dass Sie sich nicht remote als root mit der Standardinstallation anmelden können (eine der Aufgaben, die mysql_secure_installation ausführt).

Ich würde empfehlen, dies zu lassen und einen Nicht-Root-Benutzer mit den entsprechenden Berechtigungen für Ihre Anwendung zu erstellen.

Wenn Sie jedoch unbedingt einen Passwort-authentifizierten Root-Benutzer benötigen, müssen Sie das Plugin zu mysql_native_password ändern.

UPDATE mysql.user SET plugin = 'mysql_native_password', Password = PASSWORD('secret') WHERE User = 'root'; 
FLUSH PRIVILEGES; 

Jetzt quit dann log-in mit mysql -uroot -p. Wenn Sie den Dienst neu starten müssen, müssen Sie statt nur sudo systemctl restart mysql drei Befehle ausführen. Ich bin ziemlich sicher, dass es eine Ergänzung zu einer .cnf Datei gibt, die Sie machen können, damit der Neustart wie erwartet funktioniert, aber ich konnte es nicht leicht herausfinden. Grundsätzlich ist die Lektion unix_socket.

sudo systemctl stop mysql 
sudo kill -9 $(pgrep mysql) 
sudo systemctl start mysql 
+0

Danke. Es funktioniert perfekt. –

+1

Beachten Sie, dass der Versuch, die Unix-Socket-Authentifizierung zu verwenden, eine Reihe von Anwendungen mit SSH-Tunneling bricht. Es könnte auch immer noch eine bessere Idee sein, mysql native Passwort-Authentifizierung zu verwenden, nur damit Sie den gesamten Server hinter einer Firewall vergraben und darin eintauchen können. – damianb

+0

Guter Punkt @damianb. Ich schätze, es hängt davon ab, welche Anwendungsbereitstellung (oben ist perfekt für co-located Wordpress, Nextcloud usw.). –

-1

yahoo !!! Dies funktioniert nach wochenlangem Ausprobieren.

UPDATE mysql.user SET plugin = 'mysql_native_password', Password = PASSWORD('secret') WHERE User = 'root'; 
FLUSH PRIVILEGES; 

Jetzt ist das einzige, was ich beschädigt habe, mein Terminal.

sudo su verwendet [email protected] Aber jetzt nur compaq gibt zu geben, wo compaq ist das, was ich mein System nennen. Ich kann immer noch privilegierte Dinge tun. Es ist rein kosmetisch.

Verwandte Themen