2012-11-20 9 views
8

Ich habe gerade ein neues Macbook Pro (OS X 10.8.2) und versuche, mysql darauf einzurichten. Bis jetzt konnte ich es installieren, aber ich kann meinen root-Benutzerzugriff (oder irgendeinen anderen Benutzer) nicht bekommen. Ich plane, dies für Python zu verwenden, auf meinem anderen Computer verwende ich nur MYSQL (kein MAMP) und ich bevorzuge, es so zu behalten.Zugriff verweigert für MYSQL-FEHLER 1045

Als Referenz habe ich folgendes:

$ alias mysql=/usr/local/mysql/bin/mysql $ sudo /Library/StartupItems/MySQLCOM/MySQLCOM start $ alias mysqladmin=/usr/local/mysql/bin/mysqladmin

Wenn ich mysql eingeben oder mysql -u root -p es gibt mir diese:

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

oder

ERROR 1045 (28000): Access denied for user 'jmitch'@'localhost' (using password: NO) Je nachdem, welcher ph rasing ich benutze

MYSQL läuft in meinen Systemeinstellungen. Danke für Ihre Hilfe.

+0

http://www.howtoforge.com/reset-forgotten-mysql-root-password – Drew

Antwort

21

Vielleicht aktualisiert das Paket das Updater das Root-Passwort überschrieben.

es wieder her:

Stopp mysqld deamons.

$ sudo service mysqld stop 

Zum mysql/bin

$ cd /usr/bin 

Start mysql deamon mit dieser Option:

$ sudo mysqld_safe --skip-grant-tables 

Öffnen Sie ein weiteres Terminal und öffnen Sie eine mysql-Sitzung dies auszuführen:

$ mysql 

mysql> use mysql; 

see Note1 below for next line. 
mysql> UPDATE user SET password=PASSWORD('YOUR_NEW_PASSWORD_HERE') WHERE user = 'root'; 

mysql> exit; 

Jetzt töten der mysqld_safe Prozess und Neustart mysqld normalerweise:

$ sudo service mysqld start 

Hinweis 1:password ist der Spaltenname in der Tabelle mysql.user vor Version 5.7. Danach wurde es authentication_string. Ändern Sie Ihre Update-Anweisung entsprechend.

+12

'$ sudo Service mysql stop' kehrt' sudo: Service: Befehl, um den Dämon in sudo mysqld_safe --skip nicht found' – jmitchel3

+0

läuft -grant-tables-modus möglicherweise nicht wirklich erforderlich, ich habe versucht, ohne es und noch löste es mein problem (das war auf mac 10.9) – Basav

+0

das funktioniert für mich auf OS X Mavericks 10.9 nach viel Zugriff verweigert bei der Eingabe von 'mysql -u Wurzel -p, danke! – raunay

2

Ich hatte ein ähnliches Problem, als ich versuchte, über das Terminal auf Mountain Lion auf MAMPs MySQL zuzugreifen.

Die --no-defaults Flag löste es für mich.

/Applications/MAMP/Library/bin/mysql --no-defaults -u root -proot -h localhost 
5

auf Mac OSX 10.9 Mavericks verwendete ich die 'mysql.server' Skript im Verzeichnis support-files anstelle des mysqld_safe und Service-Skript.

+0

Ich habe keine Datenbank namens 'mysql', ich habe zwei Datenbanken:' information_schema' und 'test'. Ich habe durch diesen Befehl verbunden: mysql -h127.0.0.1 als via nur mysql Ich bekam diesen Fehler: Fehler 2002 (HY000): Verbindung zum lokalen MySQL-Server kann nicht über den Socket/tmp/mysql hergestellt werden. sock '(2) ' – Saurabh

1

Ich möchte hinzufügen, dass für MySQL 5.7 einfach die Spalte authentication_string nicht funktioniert. Dies liegt daran, dass MySQL diese Werte nie zur Root-Authentifizierung verwendet, sondern ein Plugin verwendet. Soweit ich das beurteilen kann, überprüft dieses Plugin, dass Sie auch root auf dem Host-Account sind (also müssen Sie sudo mysql -u root).

Der einzige Weg, ich war in der Lage, dies zu Arbeit bekommen war dies auszuführen:

UPDATE mysql.user 
SET authentication_string=PASSWORD(''), plugin='' 
WHERE mysql.user = 'root'; 

Es sollte auch, dass die Dokumentation dieser für 5.7 nie erwähnt offizielle MySQL beachtet werden. Folgt man dieser Dokumentation zu dem Brief, kommt man überhaupt nicht weiter.

+0

Ich benutze 5.7 * auf OS X 10.12.3 und kann nicht mehr den' mysql stop/start'-Alias ​​verwenden, um den Fehler der Frage zu bekommen. Ihre obige Antwort sieht vielversprechend aus, ergibt aber: 'ERROR 1054 (42S22): Unbekannte Spalte 'mysql.user' in 'where clause''? –