MySQL 루트 비밀번호 변경


101

MySQL 루트 비밀번호를 재설정하려고했습니다. mysqld_safe --skip-grant-tables를 실행하고 루트 비밀번호를 업데이트하고 사용자 테이블이 있는지 확인했습니다. mysql 데몬을 다시 시작하면 방금 설정 한 새 루트 암호로 로그인을 시도했지만 사용자 '루트'오류로 인해 액세스가 거부되었습니다. 또한 mysql (my.cnf 파일 제거 포함)을 완전히 제거하고 다시 설치하려고 시도했지만 여전히 운이 없습니다. 다음에 무엇을 할 수 있는지에 대한 제안이 있습니까?

미리 감사드립니다


2
실제 오류를 게시하십시오
Vishwanath Dalvi 2011 년

17
잠겨 있지 않은 경우 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somepassword'); 가장 안전합니다.
sabgenton 2013 년

비디오의 단계에 따라 내 서버 중 하나에서 암호를 변경했습니다 youtu.be/gFo5DV_pSg8
Prem


1
서버 버전 : 8.0.20-0ubuntu0.20.04.1 (Ubuntu) 오류 1064 (42000) : SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 1 행의 'PASSWORD ( "1")'근처에서 사용할 올바른 구문을 확인하십시오. SET PASSWORD FOR 'root'@ 'localhost'= PASSWORD ( "somepassword");
discipleartem

답변:


131
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypass');
FLUSH PRIVILEGES;

7
이것은 5.7에서 저에게 효과적이지만 수락 된 대답은 아닙니다.
Stoopkid

3
MySQL 루트 비밀번호가 공백으로 설정된 경우 올바른 솔루션입니다.
fschuindt

4
> 업데이트 mysql.user SET authentication_string = PASSWORD ( 'MyNewPass') WHERE user = 'root'; > 플러쉬 특권; MySQL 버전 5.7.x에서는 mysql 테이블에 더 이상 비밀번호 필드가 없습니다. authentication_string으로 대체되었습니다.
Robert Anthony S. Tribiana

2
이것은 나에게 확인을 제공하지만, 실제로는 아무것도하지 않는다
Freedo

1
FLUSH PRIVILEGES데이터베이스 서버를 다시 시작하지 않고 변경 사항을 적용하려면 추가 명령이 필요 합니다.
NetVicious

64

MySQL 참조 설명서에서 이것을 살펴보십시오.

첫 번째 로그인 mysql :

# mysql -u root -p

그런 다음 mysql 프롬프트에서 다음을 실행하십시오.

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';

그때

FLUSH PRIVILEGES;

자세한 내용은이 페이지를 참조하십시오. 루트 암호 재설정 : Unix 시스템


사용자 암호를 업데이트 할 때 "안전 업데이트 모드를 사용하고 있으며 KEY 열을 사용하는 WHERE없이 테이블을 업데이트하려고했습니다 ..."라는 오류가 발생했습니다. 이 오류를 해결하는 방법 은 stackoverflow.com/questions/11448068/… 을 참조하십시오 .
Joe Borysko

오류 1064 (42000) : SQL 구문에 오류가 있습니다. 올바른 구문은 MySQL 서버 버전에 해당 근처 '('MyNewPass ')를 사용하는 설명서를 확인 WHERE 사용자 ='1 행에서 루트 ''
discipleartem

31
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 문서에서 루트 암호 재설정 을 찾을 수 있습니다 .


이 쿼리는 저에게 효과적이지만 새 암호가 작동하지 않습니다 (액세스 거부 됨). 루트 사용자 askubuntu.com/a/784347/160368을 다시 만든 후에 만 ​​작동하기 시작합니다 .
hlcs

1
MySQL 8.0.20에서이 명령을 사용하여 데이터 폴더를 초기화 한 후 작동합니다mysqld --initialize --console
A. Henteti

27

이것은 WAMP v3.0.6 이상에 대한 업데이트 된 답변입니다.

> UPDATE mysql.user 
> SET authentication_string=PASSWORD('MyNewPass') 
> WHERE user='root';

> FLUSH PRIVILEGES;

MySQL 버전 5.7.x에서는 mysql 테이블에 더 이상 비밀번호 필드가 없습니다. authentication_string으로 대체되었습니다. (터미널 / CLI 용)

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

FLUSH PRIVILEGES;

(PHPMyAdmin 또는 Mysql GUI의 경우)


이 답변은 mysql.user테이블을 업데이트해야 한다고 말하는 몇 안되는 사람 중 하나입니다 . 다른 데이터베이스 ( use명령으로 설정 )를 사용하는 경우 테이블 user이 존재하지 않는다는 오류가 발생 합니다. 감사합니다!
Aleksandar

1
나를 위해 작동합니다. 5.7.x를 사용하고 있으며 mysql.user테이블 이 없습니다 . 다른 답변은 아웃 날짜가 있습니다
주 Siwei 쉔申思维

도와 줄 수있어서 기뻐!!
Robert Anthony S. Tribiana

> 사용하려는 의도이기 때문에 롤백합니다. 터미널을위한 줄당 세미콜론 때문에
Robert Anthony S. Tribiana

0 개 행 영향, 일치 행 : 3 개 변경 : 0 ...?
trainoasis

22

그것을 발견! 암호를 변경할 때 해시하는 것을 잊었습니다. 이 쿼리를 사용하여 문제를 해결했습니다.

update user set password=PASSWORD('NEW PASSWORD') where user='root';

잊고 PASSWORD('NEW PASSWORD')새 비밀번호를 일반 텍스트로 입력했습니다.


당신이 다시 와서 다른 사람들이 솔루션을 볼 수 있도록 답변을 받아 들일 수 있도록
ghostJago

1
dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html--init-file=당신이 밖을 보았을 때 이것을하는 방법을 보여줍니다 .
sabgenton 2013 년

3
동일한 명령을 사용할 때 다음 오류가 반환되는 이유는 무엇입니까? 오류 1054 (42S22) : '필드 목록'의 알 수없는 열 '암호'
Adrian M.

1
SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 '('NEW PASSWORD ') 여기서 user ='root ''근처에서 사용할 올바른 구문을 확인하십시오.
discipleartem

21

아래 단계를 따르십시오.

1 단계. MySQL 중지

2 단계. sudo mysqld_safe --skip-grant-tables

step3.mysql -u root

step4.use mysql;

step5.show tables;

step6.describe user;

step7.update user set authentication_string=password('1111') where user='root';

비밀번호 1111로 로그인


3
flush privileges마지막 단계로 중요합니다.
Khom Nazid

그것은 정말로 엉덩이로 끝났습니다. 암호를 재설정하기 위해 모든 자습서를 수행했습니다. 새 암호로 로그인 할 때를 제외하고는 모든 것이 작동하지만 작동하지 않습니다.
Shidomaru NeveRage

mysqld가 시작되지 않고 / var / lib / mysql의 데이터베이스가있는 mysqld 데몬과 같은 메시지가 pid 파일에서 mysqld_safe mysqld /var/run/mysqld/mysqld.pid가 종료되면 다음을 수행하십시오. mkdir / var / run / mysqld chomod 777 / var / run / mysqld 및 구걸에서 모두 시작
jokermt235

18

나도 주변을 검색했는데 어떤 상황에 맞는 답변도있을 것 같지만

내 상황은 Ubuntu 18.04.2 LTS 시스템의 Mysql 5.7입니다.

(루트 권한 얻기)

$ sudo bash

(루트 db 사용자의 비밀번호 설정 + 단계적으로 보안 구현)

# mysql_secure_installation

(소켓 대신 암호를 통해 루트 사용자에게 액세스 권한 부여)

(+ 편집 : 분명히 암호를 다시 설정해야합니까?)

( 'mySecretPassword'로 설정하지 마십시오 !!!)

# mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> set password for 'root'@'localhost' = PASSWORD('mySecretPassword'); 
mysql> FLUSH PRIVILEGES;
mysql> exit;

# service mysql restart

에 많은 감사 zetacu (그리고 에리히 용) 이 우수한 대답 (몇 시간을 검색 후 ...)

즐기세요 :-D

에스.

편집 (2020) :

이 방법은 더 이상 작동하지 않습니다. 나중에 참조 하려면 이 질문 을 참조하십시오.


이것은 최소한 mysql 서버 5.7의 경우 지금까지 가장 좋은 대답입니다.
Zoltán Hajdú

최고의 대답입니다. 감사합니다.
Luciano Fantuzzi

11

MySQL 8.0.4+에서

현재 루트 사용자를 업데이트하려면 :

select current_user();
set password = 'new_password';

다른 사용자를 업데이트하려면 :

set password for 'otherUser'@'localhost' = 'new_password';

비밀번호를 업데이트하기 전에 비밀번호 정책을 설정하려면 :

set global validate_password.policy = 0;
set password = 'new_password';
set password for 'otherUser'@'localhost' = 'new_password';

루트 암호를 업데이트하는 다른 / 더 나은 방법 :

mysql_secure_installation

기존 앱을 계속 사용할 수 있도록 5.x 인증을 고수하고 싶으십니까?

의 위에 my.cnf

default_authentication_plugin = mysql_native_password

루트를 업데이트하려면 :

set global validate_password.policy = 0;
alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';

7

이것은 나를 위해 일했습니다-

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

https://dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/resetting-permissions-windows.html


오류 1064 (42000) : SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 'IDENTIFIED BY'MyNewPass '근처에서 사용할 수있는 올바른 구문을 1 행
trainoasis

CLI를 통해 SQL에서 정확히 복사했습니다. o
trainoasis

물론, 내 서버 + mysql -u root -p로 sshed하여 mysql cli
trainoasis

6

비밀번호를 재설정해야합니다! Mac osx (테스트 및 작동) 및 우분투 용 단계

MySQL 중지

$ sudo /usr/local/mysql/support-files/mysql.server stop

안전 모드에서 시작하십시오.

$ sudo mysqld_safe --skip-grant-tables

(위 줄은 전체 명령입니다)

프로세스가 완료 될 때까지 계속되는 명령이므로 다른 셸 / 터미널 창을 열고 비밀번호없이 로그인합니다.

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

MySQL 시작

sudo /usr/local/mysql/support-files/mysql.server start

새 비밀번호는 'password'입니다.


나는 메시지가 있습니다 : 데이터베이스가 선택되지 않았습니다
Mimouni


5

MySQL 5.7.6 이상의 경우 :

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5 이하의 경우 :

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

3

현재 최신 mysql 버전 (8.0.16)의 경우 이러한 답변 중 어느 것도 저에게 효과가 없었습니다.

몇 가지 다른 답변을 살펴보고 함께 결합한 후 이것이 효과가있는 것을 사용하여 끝낸 것입니다.

update user set authentication_string='test' where user='root';

도움이 되었기를 바랍니다.


2

가끔씩 발생하는 일반적인 오류는 -p옵션을 잊어 버린 것이므로 다음을 사용 했습니까?

mysql -u root -p

2

MySQL 5.7에서는 비밀번호가 'authentication_string'으로 대체되었습니다.

사용하다

update user set authentication_string=password('myfavpassword') where user='root';

2

은 Using mysqladmin 데이터의 명령 줄 유틸리티하면 MySQL의 암호를 변경하려면 :

mysqladmin --user=root --password=oldpassword password "newpassword"

출처


1

@kta의 답변을 시도했지만 나를 위해 작동하지 않았습니다.

MySQL 8.0을 사용하고 있습니다.

이것은 나를 위해 일했습니다.

mysql> SET PASSWORD FOR 'root'@'localhost' = 'yourpassword'


1
코드에 몇 가지 설명을 추가하십시오-이것이 7 년 된 질문을 정확히 어떻게 해결합니까?
Nico Haase

구문이 7 년 동안 변경된 것 같습니다. 이 암호를 암호 () 포장 아니에요 dev.mysql.com/doc/refman/8.0/en/set-password.html
kangkyu

암호 해시는 41 자리 16 진수 여야합니다
Mimouni

1

너무 많은 의견이 있지만이 방법에 도움을 받았습니다.

sudo mysqladmin -u root password 'my password'

제 경우에는 설치 후 루트 사용자의 비밀번호없이 mysql 서비스를 받았으며 보안을 위해 비밀번호를 설정해야했습니다.


이전 암호를 몰라도 mysql 루트 사용자 암호를 재설정하는 데 사용할 수 있습니다. 그러나이 암호가 기록되므로 아무도 귀하의 syslog에 액세스 할 수 없도록하십시오.Aug 07 16:21:55 ubuntupc sudo[93250]: user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/mysqladmin -u root password 'my password'
Gryu

0

모든 wamp 서비스를 중지하고 wamp에서 종료하십시오.

메모장을 열고 입력> SET PASSWORD FOR 'root'@ 'localhost'= PASSWORD ( '');

그런 다음 "c : /example.txt"와 같이 이름이 .. 인 c : 드라이브에 저장합니다.

이제 "wamp"falder wamp> bin> mysql> mysql (your version)> bin으로 이동합니다. 내 경우 경로는 "C : \ wamp \ bin \ mysql \ mysql5.6.17 \ bin"입니다.

이제 경로를 복사 한 다음 (ctrl + r)을 사용하여 cmd를 실행 한 다음 "cmd"를 입력합니다 (입력).

cd를 입력하고 cmd를 마우스 오른쪽 버튼으로 클릭하고 경로를 붙여넣고 (입력) 이제 중괄호없이 (mysqld --init-file = C : \ example.txt) 입력 한 다음 (입력)

그런 다음 PC를 다시 시작하거나 taskmgr을 열고 mysqld.exe를 종료하십시오.

wamp를 시작하면 비밀번호가 제거됩니다 ...


0

MacOS 사용자의 경우 루트 암호를 잊은 경우 @thusharaK의 답변 ( https://stackoverflow.com/a/28601069/5628856 )이 좋지만 몇 가지 트릭이 있습니다.

시스템 환경 설정을 사용하여 mysql 서버 측을 시작하는 경우 간단히

sudo mysqld_safe --skip-grant-tables

당신을 위해 작동하지 않을 수 있습니다.

명령 줄 인수가 시스템 시작 구성과 동일한 지 확인해야합니다.

다음 명령이 저에게 효과적입니다.

/usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so --skip-grant-tables

당신이 사용할 수있는

ps aux | grep mysql

자신을 확인하십시오.


0

또는 대화 형 구성을 사용하십시오.

sudo mysql_secure_installation

-1

우분투에서는

sudo dpkg-reconfigure mysql-server-5.5 

교체 5.5현재 버전과 새 루트 암호를 입력해야합니다.


어떤 OS에서? 이것은 말이되지 않습니다.
Khom Nazid

-1
  1. Mac에서 시스템 환경 설정> MySQL을 엽니 다.
  2. MySQL의 구성 섹션에서 데이터베이스 초기화를 확인하십시오.
  3. 프롬프트에서 암호를 변경하십시오. 데이터베이스 초기화
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.