mysql_install_db: So legen Sie das Root-Passwort fest


7

mysql 5.6 scheint eine neue Option --random-passwords für mysql_install_db zu haben, mit der ich das Root-Passwort ermitteln kann: http://dev.mysql.com/doc/refman/5.6/en/mysql-install-db.html# option_mysql_install_db_random-passwords

Aber was kann ich mit MySQL 5.5 machen? Die Dokumentation schlägt vor, dass das Root-Passwort leer sein sollte, aber ich kann anscheinend keine Verbindung mit keinem Passwort (oder einem leeren Passwort) herstellen, sodass ich kein echtes Root-Passwort festlegen kann:

Zum Beispiel:

Ich initialisiere die Datenbank wie folgt:

$ mysql_install_db --no-defaults --user=murrayc --datadir=/tmp/testmysql/data

Ich starte den Server wie folgt:

$ mysqld_safe --no-defaults --user=murrayc --port=3308 --datadir='/tmp/testmysql/data' --socket='/tmp/testmysql/mysqld.sock' --pid-file='/tmp/testmysql/pid'

Aber wenn ich versuche, das Root-Passwort so festzulegen (ich glaube, dass sich --user in diesem Fall auf den MySQL-Benutzer bezieht, nicht auf den Linux-Benutzer):

$ mysqladmin --no-defaults --port=3308 --user=root --password='' password 'somenewpassword'

Ich erhalte diesen Fehler:

mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'

Antworten:


6

Hat bei der Installation root@localhostkein Passwort.

Sie sollten in der Lage sein, eine Verbindung ohne Passwort herzustellen, indem Sie einfach Folgendes tun:

$ mysql -uroot

Versuche Folgendes:

$ mysqladmin --no-defaults --port=3308 --user=root password 'somenewpassword'

oder du kannst es hartnäckig machen:

$ service mysql restart --skip-grant-tables --skip-networking
$ mysql -e"UPDATE mysql.user SET password=password('somenewpassword') WHERE user='root'"
$ service mysql restart
$ mysql -uroot -p

UPDATE 2013-01-02 16:47 EDT

Es tut mir leid, ich habe die Portnummer übersehen.

Hier ist das Problem: Sie können root @ localhost nicht für einen Nicht-3306-Port verwenden, es sei denn, Sie verwenden das TCP / IP-Protokoll. Bitte versuchen Sie dies:

$ mysqladmin --no-defaults --port=3308 --user=root --protocol=tcp password 'somenewpassword'

Nein, das ist der Punkt. Eine Anmeldung ohne Passwort ist nicht möglich: 10:41:12 ~$ mysql -uroot --port=3311 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) Befehle wie "service mysql restart" gelten für den regulären mysql-Prozess des Systems. Ich initialisiere eine separate Datenbank und starte eine separate mysqld-Instanz.
— Murrayc

Vielen Dank für das Update. Ich könnte nie herausfinden, dass es die Option --protocol benötigt.
— Murrayc

-2

Versuche mkdir -p var tmpvorher zu rennen mysql_install_db.

mysql db erstellen ist in meiner situation fehlgeschlagen.

Wenn var und tmp zuvor nicht erstellt wurden und sie als Paras von mysql_install_db verwenden, können wir mysqld erfolgreich starten. Wenn Sie versuchen, MySQL oder Mysqladmin zu verwenden, um eine Verbindung zum Server herzustellen, wurde der Fehler angezeigt: Zugriff für 'root' @ 'localhost' verweigert.

Vielleicht ist die Ursache der Frage bei mir dieselbe.


1
Versuchen Sie, das von wo / in welchem ​​Verzeichnis auszuführen? Welchen Fehler soll das lösen?
— Mat

basedir von mysql.
— Zhuhongk

Bitte bearbeiten Sie das in Ihrer Antwort. Ich bin mir auch nicht sicher, ob ich deinen zweiten Satz verstehe. Könnten Sie das klarstellen? Vielen Dank.
— Mat
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.