Ek het pas MySQL 5.5 geïnstalleer en direk na die installasie is ek gevra om die wortelwagwoord in te stel deur die twee opdragte uit te voer:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h linux-opxd password 'new-password'

of

/usr/bin/mysql_secure_installation

Ek het eerste opdrag uitgevoer -- OK. Ek het hierdie keer tweede opdrag uitgevoer met fout:

error: 'Access denied for user 'root'@'localhost' (using password: NO)'

Ek het die eerste een weer uitgevoer (vir kontrolering) -- fout soos hierbo.

So, ek het tereggestel mysql_secure_installation. Alles het goed gegaan en my wagwoord is herken. So ek het die eerste twee opdragte weer uitgevoer -- en weer fout.

As nog 'n tjek:

mysql --user=root

Dieselfde fout as hierbo.

Ek het probeer om die wagwoord terug te stel met mysql-verifikasie, ek het ook probeer /usr/bin/mysql_upgrade -u root -p- steeds die fout terwyl ek probeer het om mysql-konsole as root te begin.

So uiteindelik het ek verifikasie afgeskakel, aan die konsole gekoppel en dit uitgevoer:

SELECT user();

Die uitset -- [email protected]. As ek so verbind:

mysql --user='[email protected]'

Ek sal kry [email protected]@.

So vir nou blyk dit nie die probleem is met voorregte, of 'n gebrek aan wagwoord of iets soos hierdie nie, maar geen herkenning van die gebruiker wat by die opdragreël gegee is nie -- mysql voeg @aan die einde by en dit blyk die probleem te wees (ten minste vir my oog).

Die vraag is: hoe om MySQL die gegewe gebruiker te laat herken?

answer

Die eerste fout wat jy ontvang het:

error: 'Access denied for user 'root'@'localhost' (using password: NO)'

dui aan dat jy waarskynlik nie -p-opsie in mysql-opdrag gebruik het nie.

Sodra jy mysql-wortelwagwoord geskep het, behoort jy toegang tot MySql te kry deur:

mysql -u root -p

Waar jy gevra sal word om MySql-wortelwagwoord in te voer.

As u toegang vanaf 'n ander plek (anders as die plaaslike gasheer) wil aktiveer, kan u voorregte verleen deur gebruik te maak van SQL GRANT-opdragte soortgelyk aan hierdie:

mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON databaseName.* TO 'username'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

Op 'n soortgelyke manier kan jy MySql DB-toegang vanaf 'n ander gasheernaam/IP-adres of enige plek aktiveer deur 'gebruikersnaam'@'localhost' te verander na: 'gebruikersnaam'@'someFQDN', 'gebruikersnaam'@'IP_adres', 'gebruikersnaam' '@'%'.

Vir bykomende inligting sal ek aanbeveel: http://dev.mysql.com/doc/refman/5.1/en/adding-users.html .

Cheers!

Die rede waarom jy die foutboodskap op die tweede mysqladmin-opdrag kry, is omdat jy nie met die bediener verifieer met die wagwoord wat jy in die eerste opdrag gestel het nie. Sluit eenvoudig die '-p' by die tweede opdrag in, en voer die wagwoord in wanneer daarvoor gevra word. Of nog makliker, gebruik net die mysql_secure_installation-opdrag, want dit sorg vir dit plus 'n paar ander nuttige goed.