사용자 'root @ localhost'에 대한 액세스가 거부되었습니다 (비밀번호 : NO 사용).


115

저는 MySQL을 처음 사용하고 Windows 데스크톱에서 WordPress를 실행하려고하는데 MySQL이 필요합니다.

Web Platform InstallerMicrosoft에서 제공하는 모든 것을 설치 합니다. MySQL에 루트 암호를 설정하지 않았으며 WordPress 설치의 마지막 단계에서 MySQL 서버 암호를 요청합니다.

루트의 기본 암호는 무엇이며 (있는 경우) 어떻게 변경합니까?

나는 시도했다 :

mysql -u root password '123'

그러나 그것은 나에게 보여줍니다.

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

이 후에 나는 시도한다 :

mysql -u root -p

그러나 내가 가지고 있지 않은 비밀번호를 요구합니다.


업데이트 : Bozho가 제안한대로 다음을 수행했습니다.

  1. Windows 서비스에서 MySQL 서비스를 중지했습니다.
  2. 열린 CMD
  3. 위치를 c : \ program files \ mysql \ bin으로 변경했습니다.
  4. 아래 명령을 실행했습니다.

    mysqld --defaults-file="C:\\program files\\mysql\\mysql server 5.1\\my.ini" --init-files=C:\\root.txt

  5. 명령은 내가 아래에 언급 한 문자 집합에 대한 경고와 함께 실행되었습니다.

  6. Windows 서비스에서 MySQL 서비스를 시작합니다.
  7. 명령 줄에 씁니다

    mysql -u root -p EnterPassword: 123 // 123 was the password

  8. 명령 줄에 다음 오류가 표시됩니다.

    Access denied for user 'root@localhost' (using password:**YES**)

이 문제를 어떻게 해결합니까? 나는 당신의 의견을 기다리고 있습니다.


1
첫 번째 명령이 잘못되었습니다 . -p또는 이어야 --password하지만 이어야합니다 password. 이것이 mysql이 USING PASSWORD NO로 응답하는 이유입니다.
Konerak 2010 년

3
아무도 그에게 확실한 답을주지 않은 것 같습니다. root사용자 ID 의 비밀번호 는 초기 설치 후 비어 있습니다. 그러니 그냥 mysql -u root -p한 다음 Enter 키를 누르십시오. 즉, 암호를 비워 두십시오. 물론 root사용자 ID에 암호를 입력하십시오 .
RiggsFolly 2015

1
@RiggsFolly 아니, 작동하지 않습니다! 빈 암호로 인해 액세스가 거부되었습니다!
J86

수락 된 답변이 올바른지 확실하지 않아 댓글을 추가하고 싶습니다. 나를 위해 mysql -u root -p를 입력 한 다음 암호를 입력하라는 메시지가 표시되면 올바른 암호 (설치할 때 설정 한 암호)를 입력합니다. 대신 내가 알고있는 DB로 DB의 이름을 -p로 증명하는 것은 효과가 없었습니다.
Carmine Tambascia

답변:


48

루트 암호를 재설정 할 수 있습니다 . 암호없이 루트를 사용하는 것은 바람직하지 않습니다.


@Bozho-나는 지시를 따르고 텍스트 파일을 만들고 언급 된 명령에서 호출 한 후 100608 [warning] --default-character-set is deprecated and will be removed in a future release. please use --character-set-server instead.------------------------ -------- 마지막으로 mysql 서비스를 다시 시작하면 정확한 오류가 발생하지만 이번에는 (using password:yes)어떻게해야합니까?
Nasser Hadjloo

@Bozo -와 난 당신의 명령을 실행할 수 없음을 참고 mysqldt-ntI에 의해 실행 mysqldt -ntActuallythe 첫 번째는 cmd를위한 인식 할 수 없습니다. 나는 당신의 의견을 기다리고 있습니다.
Nasser Hadjloo 2010 년

@Bozho-버그로 내 질문을 업데이트했습니다. 시간 내 주셔서 감사합니다.
Nasser Hadjloo 2010 년

@Bozho-mysql 오류를 업데이트 / 사용자 정의하는 방법이 있습니까? ** " 'root @ localhost'사용자의 액세스 거부 (비밀번호 : NO 사용)"를 " 'myname @ localhost'사용자의 액세스 거부 (비밀번호 : NO)"로 업데이트 **
Hitesh

81

이런 종류의 오류 때문에 관리자로서 루트 사용자에게 새 암호를 설정하기 만하면됩니다. 다음 단계를 따르십시오.

[root ~]# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:NO)
  1. 실행중인 mysql의 서비스 / 데몬 중지

    [root ~]# service mysql stop   
    mysql stop/waiting
  2. 다음 옵션을 사용하여 권한없이 mysql을 시작하십시오. 이 옵션은 부팅에 사용되며 MySQL의 권한 시스템을 사용하지 않습니다.

    [root ~]# mysqld_safe --skip-grant-tables &

이 순간 터미널이 정지 된 것처럼 보입니다 . 그대로두고 다음 단계에 새 터미널을 사용하십시오.

  1. mysql 명령 프롬프트를 입력하십시오

    [root ~]# mysql -u root
    mysql> 
  2. 루트 사용자의 권한 설정을 수정하십시오.

    mysql> use mysql;
    Database changed
    mysql> select * from  user;
    Empty set (0.00 sec)
    mysql> truncate table user;
    Query OK, 0 rows affected (0.00 sec)
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    mysql> grant all privileges on *.* to root@localhost identified by 'YourNewPassword' with grant option;
    Query OK, 0 rows affected (0.01 sec)

* 비밀번호를 원하지 않거나 빈 비밀번호를 원할 경우

    mysql> grant all privileges on *.* to root@localhost identified by '' with grant option;
    Query OK, 0 rows affected (0.01 sec)*
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

결과 확인 :

    mysql> select host, user from user;
+-----------+------+
| host      | user |
+-----------+------+
| localhost | root |
+-----------+------+
1 row in set (0.00 sec)
  1. 셸을 종료하고 일반 모드에서 mysql을 다시 시작합니다.

    mysql> quit;
    [root ~]# kill -KILL [PID of mysqld_safe]
    [root ~]# kill -KILL [PID of mysqld]
    [root ~]# service mysql start
  2. 이제 설정 한 비밀번호로 루트 사용자로 성공적으로 로그인 할 수 있습니다.

     [root ~]# mysql -u root -pYourNewPassword 
     mysql> 

2
"[root ~] # mysqld_safe --skip-grant-tables &"다음에 Enter를 누르고 다른 터미널을 열어 "[root ~] # mysql -u root"를 입력합니다.
Liuda

나는이 문제를 만났고 많은 일을했습니다 .DB 서비스를 다시 시작하는 것을 잊어 버렸습니다 ... 많은 감사합니다!
브루스 리

3
3 단계에서ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
MrMartin

4
@MrMartin, 그 dir을 만들고 sudo mkdir -p /var/run/mysqld그것에 대한 권한을 부여하십시오sudo chown mysql:mysql /var/run/mysqld
niceday

이것이 저에게 많은 도움이 된 대답입니다!
Jones G

17

1) MySQL 콘솔을 호출하여 루트 암호를 설정할 수 있습니다. 그것은에 있습니다

C:\wamp\bin\mysql\mysql5.1.53\bin 기본적으로.

디렉토리로 이동하여 MySQL을 입력하십시오. 다음과 같이 비밀번호를 설정합니다.

    > SET PASSWORD FOR root@localhost = PASSWORD('new-password');

2) 루트 사용자를 위해 wamp의 phpmyadmin 응용 프로그램을 편집하여 구성 할 수 있습니다.

C:\wamp\apps\phpmyadmin3.3.9\config.inc.php 

참고 : -xampp를 사용하는 경우 파일은

C:\xampp\phpMyadmin\config.inc.php

다음과 같이 보입니다.

        $cfg['Servers'][$i]['verbose'] = 'localhost';
        $cfg['Servers'][$i]['host'] = 'localhost';
        $cfg['Servers'][$i]['port'] = '';
        $cfg['Servers'][$i]['socket'] = '';
        $cfg['Servers'][$i]['connect_type'] = 'tcp';
        $cfg['Servers'][$i]['extension'] = 'mysqli';
        $cfg['Servers'][$i]['auth_type'] = 'config';
        $cfg['Servers'][$i]['user'] = 'root';
        $cfg['Servers'][$i]['password'] = 'YOURPASSWORD';
        $cfg['Servers'][$i]['AllowNoPassword'] = false;

오류 "액세스가 사용자에 대한 거부 '루트 @ localhost를'(사용 암호 : 아니오)"으로 설정 한 경우 해결됩니다 $cfg['Servers'][$i]['AllowNoPassword']거짓

이전에 'root @ localhost'의 비밀번호를 변경 한 경우 " 'root @ localhost'사용자에 대한 액세스가 거부되었습니다."오류를 해결하려면 다음 두 가지 작업을 수행해야합니다.

  1. [ 'password']에 '' 와 같은 빈 따옴표가 있으면 따옴표 사이에 암호를 넣으십시오.
  2. (비밀번호 사용 : NO)를 (비밀번호 사용 : YES)로 변경합니다.

이렇게하면 오류가 해결됩니다.

참고 : phpmyadmin은 wamp와 함께 제공되는 별도의 도구입니다. MySQL에 대한 인터페이스 만 제공합니다. 내 SQL 루트의 비밀번호를 변경하면 phpmyadmin 구성을 변경해야합니다. 일반적으로 phpmyadmin은 루트 사용자로 구성됩니다.


no you cant .. mysql이 시작되지 않습니다 : c : \ wamp64 \ bin \ mysql \ mysql5.7.23 \ bin> mysql 오류 1045 (28000) : 사용자 'ODBC'@ 'localhost'에 대한 액세스가 거부되었습니다 (비밀번호 사용 : NO)
Jaxx0rr

9

OS X El 주장에서 동일한 오류가 발생했습니다. Mysql 버전 5.7. 이 단계를 실행 한 후 루트로 mysql에 연결할 수있었습니다.

mysql 서버 중지

sudo mysql.server stop

안전 모드에서 mysql 시작

sudo mysqld_safe --skip-grant-tables

mysqld를 사용하여 데이터베이스를 mysql로 ​​변경하고 사용자 'root'에 대한 세부 정보를 업데이트합니다.

show databases;
use mysql;
UPDATE mysql.user 
    SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
    WHERE User = 'root' AND Host = 'localhost';
exit;

그 후 'mysqld_safe'프로세스를 종료하고 mysql을 정상적으로 시작하십시오. 루트 및 새 암호를 사용하여 mysql에 로그인 할 수 있어야합니다. 자세한 내용은 SQL 문서


4

my.iniC : \ xampp \ mysql \ bin 경로에서 파일을 편집하기 만하면 됩니다. 다음을 추가하십시오.

skip-grant-tables

라인 사이의 라인 # The MySQL server [mysqld]port=3306 . 그런 다음 MySQL 서버를 다시 시작하십시오.

다음과 같이 보입니다.

스크린 샷


이렇게하면 또 다른 오류가 발생합니다communications link failure
Ahmed Hussein

3

MySQL 서비스가 컴퓨터에서 실행 중인지 확인한 다음 MySQL의 지침에 따라 루트를 처음 설정합니다 ( 'windows'를 검색하면 루트 설정 단계로 이동합니다).

http://dev.mysql.com/doc/refman/5.1/en/default-privileges.html


이 솔루션은 두 번째 단계에서 필요한 암호가 없기 때문에 저에게 효과적이지 않습니다.
Nasser Hadjloo 2010 년

이것이 제가 링크를 보냈을 때 본 것입니다. 이것이 작동하지 않는 것이 확실합니까? 이전 암호에 대한 참조가 표시되지 않습니다. Windows의 경우 다음과 같이하십시오. shell> mysql -u root mysql> SET PASSWORD FOR 'root'@ 'localhost'= PASSWORD ( 'newpwd'); mysql> SET PASSWORD FOR 'root'@'127.0.0.1'= PASSWORD ( 'newpwd'); mysql> SET PASSWORD FOR 'root'@ '%'= PASSWORD ( 'newpwd');
sholsapp 2010 년

1
내가 글을 쓸 때 전에 말했듯 mysql -u root이 문제가 발생하고 mysql에 로그인하여 두 번째 줄을 실행할 수 없습니다. 그래서이 명령을 사용하는 방법?
Nasser Hadjloo 2010 년

3

mysql -u root -p를 사용하면 암호를 묻고 암호를 입력하고 입력합니다.


이것은 사용자에 대한 액세스가 거부 된 후에 작동했습니다.
Shawn W

2

누군가가 오류가 발생 하는 경우 다른 솔루션 'root'사용자 계정에 대해 지정된 암호가 유효하지 않거나 데이터베이스 서버에 연결하지 못했습니다. 암호로 경우 다음과 같습니다.

• Windows 레지스트리에서 HKCU \ Software \ Microsoft \ WebPlatformInstaller 아래의 mysql_pwd reg 키를 삭제합니다.

• MySQL .NET 커넥터의 모든 이전 버전

• 최신 MySql .NET 커넥터를 다운로드하여 설치합니다 .


암호와 데이터베이스 이름을 확인하는 것이 저에게
효과적이었습니다

2

MySQL 5.7의 경우. 다음 단계는 다음과 같습니다.

MySQL 서버를 완전히 중지하십시오. 이는 MySQL 서비스를 중지 할 수있는 Windows XP 및 Windows Server 2003 내의 서비스 창에 액세스하여 수행 할 수 있습니다.

실행 창에서 "cmd"를 사용하여 MS-DOS 명령 프롬프트를 엽니 다. 그 안에서 cd ​​명령을 사용하여 C : \ MySQL \ bin과 같은 MySQL bin 폴더로 이동합니다.

명령 프롬프트에서 다음 명령을 실행합니다. mysqld.exe -u root --skip-grant-tables

현재 MS-DOS 명령 프롬프트를 그대로두고 새 MS-DOS 명령 프롬프트 창을 엽니 다.

cd 명령을 사용하여 C : \ MySQL \ bin과 같은 MySQL bin 폴더로 이동합니다.

mysql을 입력하고 Enter를 누르십시오.

이제 MySQL 명령 프롬프트가 작동해야합니다. use mysql을 입력합니다. "mysql"데이터베이스로 전환합니다.

다음 명령을 실행하여 암호를 업데이트하십시오.

사용자 업데이트 set authentication_string = password ( '1111') 여기서 user = 'root';


1

코드에서 'root' 를 서버 사용자 이름으로 , 암호를 서버 암호로 바꿉니다. 예를 들어 http://www.example.com 서버에 DB 및 php 파일이있는 경우 사용자 이름과 비밀번호를 사용하여이 서버 사이트에 입력해야합니다.


1

XAMPP를 사용하는 경우로 이동 C:\xampp\phpMyAdmin한 다음 config.inc.php찾기 $cfg['Servers'][$i]['password'] = ''줄 을 열고 거기에 암호를 입력하십시오.


1

일부 정보는 비밀번호 변경 후 오류가 발생합니다.

사용자 'root'@ 'localhost'에 대한 액세스 거부 (암호 사용 : NO)

사용자 'root'@ 'localhost'에 대한 액세스가 거부되었습니다 (암호 사용 : YES).

두 경우 모두 오류가 발생했습니다.

하지만 그 후 나는 그것을 시도했습니다

mysql -uroot -ppassword 대신에

mysql -u root -p password -> -uroot와 -ppassword 사이에 공백이 있으므로 누군가 문제가 발생하면이 방법을 시도 할 수 있습니다.


0

때로는 Wamp 설치 또는 루트 사용자의 암호 옵션 변경으로 인해 발생합니다. 권한-> 루트 (사용자)를 사용한 다음 암호 옵션을 NO로 설정하여 암호없이 작업을 실행하거나 암호를 설정하고 응용 프로그램에서 사용할 수 있습니다.


0
  1. 에서 config.inc.php현재 비밀번호를 변경합니다 C:\xampp\phpMyAdmin.
  2. mysql -u root -p명령 프롬프트에 입력 하십시오.
  3. 암호를 입력하라는 메시지가 표시됩니다. 에서 업데이트 한 비밀번호를 입력합니다 config.inc.php.

0

포트를 비표준 포트로 변경 한 경우이를 지정해야합니다.

$ connection = mysqli_connect ( 'localhost : 3308', 'root', '', 'loginapp');


-3
mysqladmin -u root -p password

당신의 current password

그때

당신의 new password


1
요점은 OP 가 설정되지 않았기 때문에 현재 암호를 알지 못한다것입니다 .
Nateowami

내 비밀번호를 알고 있었지만 임시 비밀번호로 로그인하는 데 문제가있었습니다. 이 대답은 나를 위해 일했습니다
Bernard
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.