Strona 1 z 2

[+] zmiana hasła dla uŻytkownika root - baza mysql

: 23 września 2009, 21:47
autor: lestek
Witam.

Kilka dni temu chciałem uruchomić bazę mysql zdalnie. Po przejrzeniu paru artykułów w Google w końcu mi się udało. Wtedy zaczął się mój horror. Nie mogłem zrestartować mysqla, pojawiły się problemy z użytkownikiem:

Kod: Zaznacz cały

debian-sys-maint'@'localhost
który na szczęście udało mi się pokonać.
Problem polega na tym, że nie mogę zmienić hasła dla roota. Wciąż dostaję informację:

Kod: Zaznacz cały

Access denied for user 'root'@'localhost' (using password: YES)
Próbowałem zastosować dwie metody:

Kod: Zaznacz cały

mysqld_safe --skip-grant-tables &
oraz:

Kod: Zaznacz cały

dpkg-reconfigure mysql-server-5.0
ale nadal nie mogę się zalogować na hasło jakie zmieniłem. Wcześniej stosowałem 1 metodę, po której wszystko dalej działało -- teraz to nie pomaga.
Jakieś sugestie?

Pozdrawiam.

: 24 września 2009, 08:20
autor: michnik
Jak próbujesz zalogować się do bazy?

Używasz:

Kod: Zaznacz cały

 mysql -u nazwaużytkownika -p 

: 24 września 2009, 16:46
autor: lestek
Tak, dokładnie w taki sposób się loguję do bazy.

: 24 września 2009, 18:33
autor: lessmian2
Tzn. uruchamiasz MySQL'a z przełącznikiem

Kod: Zaznacz cały

--skip-grant-tables
a potem logujesz się za pomocą

Kod: Zaznacz cały

mysql -u root -p
Dobrze zrozumiałem? Jeśli tak, to musisz zalogować się bez podawania hasła, za pomocą

Kod: Zaznacz cały

mysql -u root
Zmieniasz hasło root'a i uruchamiasz ponownie MySQL'a.

: 24 września 2009, 18:35
autor: PiotrSz
U mnie zadziałał sposób opisany >tu<.

: 24 września 2009, 19:14
autor: lestek
Oj chłopaki to też stosowałem, ale dziękuję za zainteresowanie. Tak czy siak przed chwilą mi się udało.
Zrobiłem to jednak w następujący sposób:
  1. Uruchomiłem mysql poprzez:

    Kod: Zaznacz cały

    mysqld_safe --skip-grant-tables &
  2. Uruchomiłem phpMyAdmina i z tabeli ,,user'' usunąłem dwóch użytkowników root.
  3. Następnie z palca dodałem nowego użytkownika root, ustawiłem mu prawa na Y (Yes).
  4. Uruchomiłem ponownie serwer mysql i bez problemu zalogowałem się komendą:

    Kod: Zaznacz cały

    mysql -u root -p
Nadal nie wiem czemu tak się działo. Możliwe, że przez te dwa konta root.

: 25 września 2009, 09:25
autor: PiotrSz
Pytaniem nie jest dlaczego nie działało, tu sprawa jest jasna zduplikowana nazwa konta, ale jak udało Ci się stworzyć dwa konta root? Myślę, że to jest jakiś błąd, na pewno warto to zgłosić na stronie Raporty błędów mySQL.

: 25 września 2009, 10:25
autor: lessmian2
PiotrSz pisze:ale jak udało Ci się stworzyć 2 konta root? Myśle że to jest jakiś bug
A ja mam 3 "root'ów"

Kod: Zaznacz cały

mysql> select Host, User from user where user='root'\G
*************************** 1. row ***************************
Host: 127.0.0.1
User: root
*************************** 2. row ***************************
Host: krogulec.xxxxx
User: root
*************************** 3. row ***************************
Host: localhost
User: root
3 rows in set (0.00 sec)
Wszystko działa prawidłowo. Czemu niby to ma być bug? Zauważ że wpisy różnią się wartością Host - definiując hosty z których dany user może się łączyć, dodawane są odpowiednie wpisy w tabeli mysql.user. Nic w tym dziwnego. Użytkownik root jest jeden, a to że rekordów w tabelce jest więcej o niczym nie świadczy.

: 25 września 2009, 10:42
autor: PiotrSz
lessmian2 pisze:Użytkownik root jest jeden, a to że rekordów w tabelce jest więcej o niczym nie świadczy.
lestek pisze:Nadal nie wiem czemu tak się działo. Możliwe, że przez te dwa konta root.
No więc albo to semantyka, albo mówimy o dwóch różnych rzeczach. Mnie chodziło o to, że nie można stworzyć dwóch kont root, a nie o to że możesz jednemu kontu nadać możliwość logowania do bazy na różnych hostach.

: 25 września 2009, 11:02
autor: lessmian2
PiotrSz pisze:Mnie chodziło o to że nie można stworzyć dwóch kont root
Zgadzam się z Tobą. Jednak wydaje mi się że lestek pisząc o dwóch użytkownikach root miał na myśli właśnie dwa rekordy które są domyślnie - jeden dla localhost i drugi dla 127.0.0.1. Niestety nie zamieścił logów, które mogły by rozjaśnić sprawę. W każdym razie ważne jest to, że udało mu się rozwiązać problem.