2012-11-20 7 views
8

Ho appena ricevuto un nuovo MacBook Pro (OS X 10.8.2) e sto tentando di ottenere mysql impostato su di esso. Finora sono stato in grado di installarlo ma non riesco a ottenere l'accesso dell'utente root (o qualsiasi altro utente). Ho intenzione di usare questo per Python, sul mio altro computer uso solo MYSQL (senza MAMP) e preferisco mantenerlo in questo modo.Accesso negato per MYSQL ERROR 1045

Per avere un riferimento, ho fatto la seguente:

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

quando entro mysql o mysql -u root -p mi dà questo:

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

o

ERROR 1045 (28000): Access denied for user 'jmitch'@'localhost' (using password: NO) A seconda quale ph Io uso

MYSQL è in esecuzione nelle mie preferenze di sistema. Grazie per l'aiuto.

+0

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

risposta

21

Forse aggiornando il pacchetto, l'updater ha sovrascritto la password di root.

per ripristinarla:

demoni arresto mysqld.

$ sudo service mysqld stop 

Vai a MySQL/bin

$ cd /usr/bin 

Avviare un demone mysql con questa opzione:

$ sudo mysqld_safe --skip-grant-tables 

Aprire un altro terminale e aprire una sessione di mysql per eseguire questo:

$ 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; 

Ora uccide il processo mysqld_safe e riavviare mysqld normalmente:

$ sudo service mysqld start 

Note1:password è il nome della colonna nella tabella mysql.user prima versione 5.7. Dopo di che è diventato authentication_string. Cambia di conseguenza la tua dichiarazione di aggiornamento.

+12

'$ sudo servizio mysql stop' restituisce' sudo: servizio: comando non trovato' – jmitchel3

+0

eseguendo il daemon in sudo mysqld_safe --skip la modalità -grant-tables potrebbe non essere realmente necessaria, ho provato senza di essa e ancora ha risolto il mio problema (questo era su mac 10.9) – Basav

+0

questo funziona per me su OS X Mavericks 10.9 dopo aver avuto accesso negato quando si digita 'mysql -u root -p ', grazie! – raunay

2

Avevo un problema simile cercando di accedere a MySQL di MAMP tramite il terminale di Mountain Lion.

Il flag --no-defaults lo ha risolto per me.

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

su Mac OSX 10.9 Mavericks ho usato lo script 'mysql.server' nella directory support-files invece dello script mysqld_safe e servizio.

$sudo ./mysql.server stop 
$sudo ./mysql.server start --skip-grant-tables 
$ mysql 
mysql> use mysql; 
mysql> UPDATE user SET password=PASSWORD('YOUR_NEW_PASSWORD_HERE') WHERE user = 'root'; 
mysql> exit; 
$sudo ./mysql.server stop 
$sudo ./mysql.server start 
+0

Non ho alcun database chiamato 'mysql', ho due database:' information_schema' e 'test'. Mi sono collegato tramite questo comando: 'mysql -h127.0.0.1' come via semplicemente' mysql' Stavo ricevendo questo errore: 'ERRORE 2002 (HY000): Impossibile connettersi al server MySQL locale tramite socket '/ tmp/mysql. sock '(2) ' – Saurabh

1

Voglio aggiungere che per MySQL 5.7 la semplice modifica della colonna authentication_string non funziona. Questo perché MySQL non usa mai quei valori per l'autenticazione di root, utilizza un plugin. Per quanto posso dire questo plugin verifica che tu sia anche root sull'account host (quindi devi sudo mysql -u root).

L'unico modo sono stato in grado di ottenere questo al lavoro è stato quello di eseguire questo:

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

Va inoltre notato che la documentazione ufficiale di MySQL per la 5.7 non menziona mai questo. Seguire questa documentazione alla lettera non ti porta affatto.

+0

Sono in esecuzione 5.7 * su OS X 10.12.3 e non posso più usare l'alias' mysql stop/start', ottenendo l'errore della domanda. La tua risposta sopra sembra promettente, ma fornisce: 'ERRORE 1054 (42S22): colonna sconosciuta 'mysql.user' in 'where clause''? –