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


184

나는 주로 프로그래밍 대신 전력 시스템을 가지고 노는 전기 엔지니어입니다. 최근에는 Ubuntu에 소프트웨어 제품군을 설치하기 위해 매뉴얼을 따르고 있습니다. 나는 mySQL실제로 전혀 모른다 . 우분투에서 다음 설치를 완료했습니다.

sudo apt-get update
sudo apt-get install mysql-server-5.5
sudo apt-get install mysql-client-5.5
sudo apt-get install mysql-common
sudo apt-get install glade
sudo apt-get install ntp

그런 다음

me@ubuntu:~/Desktop/iPDC-v1.3.1/DBServer-1.1$ mysql -uroot -proot <"Db.sql"

다음과 같은 오류 메시지가 나타납니다.

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

어떻게 수정하고 계속할 수 있습니까?


1
이것은 엄격하게 프로그래밍 관련 이 아닌 것 같습니다 . 수퍼 유저로의 마이그레이션을 위해 플래그를 지정했습니다
Uli Köhler

: 미래 방문자, 또한 여러 가지 원인이 여기에 설명 확인하는 것을 잊지 마세요 dev.mysql.com/doc/refman/8.0/en/problems-connecting.html
aderchox

답변:


155

참고 : 들어 MySQL을 5.7 이상 참조하십시오 @Lahiru에서 대답 이 질문에. 최신 정보가 들어 있습니다.

MySQL <5.7의 경우 :

기본 루트 비밀번호는 공백입니다 (예 : 빈 문자열) not root. 따라서 다음과 같이 로그인하면됩니다.

mysql -u root

설치 후 루트 암호를 분명히 변경해야합니다

mysqladmin -u root password [newpassword]

대부분의 경우 DB를 광범위하게 다루기 전에 개별 사용자 계정도 설정해야합니다.


5
@FarticlePilter -p플래그는 비밀번호를 지정하므로 루트 비밀번호를 변경 한 후에는 다음과 같이 mysql -u root -p[newpassword]합니다. 는 < [filename]사용자가 제공 한 사용자 자격 증명을 통해 주어진 경로에서 SQL 파일을 실행하기 위해 표준 입력을 사용합니다.
Mike Brant

27
나는 지시대로 시도 mysqladmin -u root password abc1234했지만 나는 얻었다 mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'. 정말 고맙습니다!
Sibbs Gambling

2
이 질문에서 @Kanagaroo는 OP가 처음으로 MySQL을 설치 한 다음 MySQL 명령 줄 클라이언트를 통해 액세스를 시도했다고 말합니다. 저에게 처음 접근하는 것 같습니다.
Mike Brant

18
실제로 mysql 커뮤니티 서버 5.7의 경우 기본 루트 비밀번호는 설치시 임의로 생성됩니다. "임시 비밀번호"에 대한 내용은 /var/log/mysqld.log를 확인하십시오. 엉망인 시간을 절약합니다.
Phil

1
@BraianMellor 이것은 우분투의 기본 (설치 후) 루트 암호가 공백 (암호 없음)이라는 점에서 MySQL <5.7의 문제를 해결합니다. 원래 질문에서 포스터는 루트 / 루트를 사용하려고했습니다. 질문은 비밀번호 분실, 비밀번호 변경 또는 유사에 관한 것이 아닙니다. MySQL의 최신 버전의 경우 사용자가 무작위로 생성 된 루트 암호를 보려면 오류 로그를 확인해야하기 때문에 내가 언급 한 다른 대답이 맞습니다.
마이크 브랜트

114

이 문장을 실행 하여이 문제를 해결할 수있었습니다.

sudo dpkg-reconfigure mysql-server-5.5

루트 암호가 변경됩니다.


10
내가 필요한 것 ... 하지만 모든 사람이 서버 5.5 버전을 가지고 있지는 않습니다. dpkg --get-selections | grep sql버전을
구하는 데

1
@Balmipour Rhel 6.x에서 SQL 버전을 확인하기 위해 동등한 명령이되어야하는 것
PrathamN

1
@Divz Rhel / centos에서 mysql 서버를 재구성하는 명령은 무엇인가
PrathamN

@PrathamN 나는 red를 사용하지 않았지만 "red hat check packages versions"에 대한 인터넷 검색은 다음과 같은 명령을 제공 합니다. SQL 패키지 만 필터링하려면 yum list installed추가 | grep sql하십시오.
Balmipour

1
Mac OS X에서이 명령을 실행하면 다음 오류가 발생 sudo: dpkg-reconfigure: command not found합니다. 어떠한 제안?
mOna

90

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

사용하여 MySQL 중지

sudo service mysql stop

또는

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

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

$ sudo mysqld_safe --skip-grant-tables --skip-networking

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

프로세스가 완료 될 때까지 계속 진행되는 명령이므로 다른 쉘 / 터미널 창을 열고 암호없이 로그인하십시오.

$ mysql -u root

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

@IberoMedia의 의견에 따라 최신 버전의 MySQL의 경우 필드를 다음과 같이 지정합니다 authentication_string.

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

다음을 사용하여 MySQL을 시작하십시오.

sudo service mysql start

또는

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

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


3
그런 식으로하지 마십시오! @Divz의 답변이 더 안전합니다. --skip-grant-tables에 대한 문서 인용 : 이것은 암호없이 모든 권한으로 모든 사람이 연결할 수있게합니다. [...] 이것이 안전하지 않기 때문에 [...]는 원격 클라이언트의 연결을 막기 위해 --skip-grant-tables함께 사용 됩니다 --skip-networking. 아, 그리고 이것도 저에게 효과가 없었습니다. 그래서 내가 여기에 왔습니다 : p
Balmipour

1
당신이 그렇게한다면 , 그렇습니다. 그것은 나를 위해 작동하지 않았고 @Divz의 대답을 따르는 것이 더 쉬워 보입니다. 어쨌든 --내가 제안하는 것은 dpkg --get-selections | grep mysql-server-정확한 MySQL 버전을 얻는 데 사용 하는 것입니다 .sudo dpkg-reconfigure mysql-server-5.x (5 대체) .x 서버 버전, btw). 나는이 정밀도로 @Divz의 답변을 언급했지만 몇 가지 "감사"주석으로 가려져 있습니다.
Balmipour

4
사용자 세트 업데이트 update_string = password ( '1111') 여기서 user = 'root';
Dejell

2
이것은 실제로 작동했습니다 ... 다른 솔루션은 여전히 ​​같은 오류를 냈습니다.
eddy147

2
MySQL 5.7.6부터 Password 열의 이름이 "authentication_string"으로 변경되었습니다. 여기에서 자세한 내용을 읽을 수 있습니다. bugs.mysql.com/bug.php?id=76655
IberoMedia

55

나는 이것이 오래된 질문이라는 것을 알고 있지만 이것이 누군가를 도울 수 있다고 생각합니다. 나는 최근에 같은 문제에 직면했지만 내 경우에는 암호를 잘 기억하지만 동일한 오류가 계속 발생합니다. 나는 많은 솔루션을 시도했지만 여전히 아무도 도움이되지 않았다.

mysql -u root -p 

그 후 다음과 같은 암호를 요구합니다.

Enter password: 

그런 다음 사용한 비밀번호를 입력했습니다. 그게 다야


3
며칠간의 연구 끝에 도움이되었다는 것이 재밌습니다.
girish_vr

니스 @girish_vr 알고
XY-JOE에게

나를 위해 일했다! 내 MySQL의 서버 버전은 다음과 같습니다 Server 버전 : 8.0.13 MySQL의 커뮤니티 서버 - GPL
kaspiotr

이것은 도움이되었습니다. 이것은 MySQL 측에서 매우 어리석기 때문에 여전히 믿을 수 없습니다.
wscourge

39

서버를 처음 시작할 때 서버의 데이터 디렉토리가 비어있는 경우 다음이 발생합니다.

  • 서버가 초기화되었습니다.
  • SSL 인증서 및 키 파일은 데이터 디렉토리에 생성됩니다.
  • validate_password 플러그인이 설치되어 활성화되었습니다.
  • 수퍼 유저 계정 'root'@ 'localhost'가 생성됩니다. 수퍼 유저의 비밀번호가 설정되어 오류 로그 파일에 저장됩니다.

공개하려면 다음 명령을 사용하십시오.

shell> sudo grep 'temporary password' /var/log/mysqld.log

생성 된 임시 비밀번호로 로그인하여 가능한 빨리 루트 비밀번호를 변경하고 수퍼 유저 계정에 대한 사용자 정의 비밀번호를 설정하십시오.

shell> mysql -u root -p #Login to root user with some password

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 

16
이것은 유망한 것처럼 보였지만 나에게는 효과가 없습니다. 내가 실행할 때 sudo grep 'temporary password' /var/log/mysqld.log내가 얻을/var/log/mysqld.log: No such file or directory
에릭 Hepperle - CodeSlayer2010

4
시도하십시오 sudo grep 'temporary password' /var/log/mysql/error.log. @ Lahiru 솔루션이 나를 위해 일했습니다.
artemisian

17
sudo grep '임시 비밀번호'/var/log/mysql/error.log를 시도했지만 아무것도 반환하지 않습니다.
학습자

2
시도하십시오 shell> sudo grep 'password' /var/log/mysql/error.log. 나를 위해 일했지만 root @ localhost가 빈 암호로 만들어집니다! --initialize-insecure 옵션을 끄십시오. 내 MySQL 버전은 다음과 같습니다. x86_64의 Linux 용 Ver. 8.0.13 (MySQL 커뮤니티 서버-GPL)
kaspiotr

1
@EnginYilmaz 왜 mysql에 액세스 할 수 없다는 문제가있을 때 mysql 명령을 제안합니까?
R-obert

34

문제가 여전히 존재하면 패스를 강제로 변경하십시오.

/etc/init.d/mysql stop

mysqld_safe --skip-grant-tables &

mysql -u root

새로운 MySQL 루트 사용자 비밀번호 설정

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

MySQL 서버를 중지하십시오.

/etc/init.d/mysql stop

MySQL 서버를 시작하고 테스트하십시오 :

mysql -u root -p

1
감사합니다. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)또한 내 서버를 괴롭 히고 있었다. 'mysqld_safe'도 1 단계 후 'killall mysqld'를 수행 할 때까지 실패했습니다.
Marcos

그런 식으로하지 마십시오! @Divz의 답변이 더 안전합니다. --skip-grant-tables에 대한 문서를 인용 : 이것은 암호없이 모든 권한으로 연결할 수 있습니다 [...] 이것은 안전하지 않기 때문에 [...]는 원격 클라이언트의 연결을 막기 위해 --skip-grant-tables함께 사용 됩니다 --skip-networking. 아, 그리고 이것도 저에게 효과가 없었습니다. 내가 여기 온 이유는 그게 전부 : P
Balmipour

2
그 날 제공 : ERROR 1054 (42S22) : 알 수없는 열 '암호' '필드 목록'에서
MD합니다. Mohiuddin Ahmed

@Anshu의 답변을 확인하십시오. 이것을 처리하는 것이 더 안전한 방법입니다
Mugoma J. Okomba

1
@ MD.MohiuddinAhmed 최신 버전의 mysql-server를 사용해야합니다. 이 답변을 참조하십시오 : stackoverflow.com/a/31122246/6242649
Udayraj Deshmukh

32

비밀번호가 없을 때 발생합니다.

잊었을 때 비밀번호를 변경하는 단계 :

  1. MySQL 서버 중지 (Linux) :

    sudo systemctl stop mysql
  2. 권한 부여 테이블을로드하거나 네트워킹을 사용하지 않고 데이터베이스를 시작하십시오.

    sudo mysqld_safe --skip-grant-tables --skip-networking &

    이 명령의 끝에있는 앰퍼샌드는이 프로세스를
    백그라운드 에서 실행 하므로 터미널을 계속 사용하고 #mysql -u root를 실행할 수 있으며 암호를 묻지 않습니다.

    아래와 같이 오류가 발생하면 :

    2018-02-12T08 : 57 : 39.826071Z UNIX
    소켓 파일에 대한 mysqld_safe 디렉토리 '/ var / run / mysqld' 가 존재하지 않습니다. mysql -u root ERROR 2002 (HY000) : 소켓
    '/var/run/mysqld/mysqld.sock'을 통해 로컬 MySQL 서버에 연결할 수 없음 (2) [1] + Exit 1

  3. MySQL 서비스 디렉토리를 만듭니다.

    sudo mkdir /var/run/mysqld

    MySQL 사용자에게 서비스 디렉토리에 쓸 수있는 권한을 부여하십시오.

    sudo chown mysql: /var/run/mysqld
  4. 백그라운드에서 mysql을 실행하려면 2 단계에서 동일한 명령을 실행하십시오.

  5. mysql -u root를 실행하면 암호를 입력하지 않고도 mysql 콘솔을 얻을 수 있습니다.

    이 명령을 실행

    FLUSH PRIVILEGES;

    MySQL 5.7.6 이상

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

    MySQL 5.7.5 이상

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

    ALTER USER 명령이 작동하지 않으면 다음을 사용하십시오.

    UPDATE mysql.user SET authentication_string = PASSWORD('new_password')     WHERE User = 'root' AND Host = 'localhost';

이제 종료

  1. 수동으로 시작된 인스턴스를 중지하려면

    sudo kill `cat /var/run/mysqld/mysqld.pid`
  2. MySQL을 다시 시작

    sudo systemctl start mysql

2
제 경우에는 6 단계를 다음과 같이 수정해야합니다.sudo kill `sudo cat /var/run/mysqld/mysqld.pid`
kolunar

1
이것은 나를 위해 일한 것입니다. 5 단계에서 1을 수행하십시오. USER 2를 사용하십시오. 암호 사용을 변경하려면-> user set authentication_string = PASSWORD ( "password")를 업데이트하십시오. 여기서 User = 'root';
Bikram

1
이것이 가장 좋은 해결책입니다. MBP '15 모델의 macOS Mojave에서 "5.7.26 MySQL 커뮤니티 서버 (GPL)"사용. 시스템 환경 설정에서 Mysql을 중지 한 다음 2 단계와 5 단계를 수행했습니다. 그런 다음 ps -ef | grep mysql.
cspider

12

나는이 매우 성가신 문제를 발견하고 작동하지 않는 많은 답변을 발견했습니다. 내가 만난 가장 좋은 해결책은 mysql을 완전히 제거하고 다시 설치하는 것이 었습니다. 다시 설치할 때 루트 암호를 설정하면 문제가 해결되었습니다.


sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

이 코드를 다른 곳에서 찾았으므로 크레딧을 얻지 못했습니다. 그러나 작동합니다. 제거 후 mysql을 설치하려면 digital ocean에 좋은 자습서가 있다고 생각합니다. 내 요점을 확인하십시오.
https://gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096


12

Ubuntu-16.04를 사용하고 있습니다 : mysql-5.7 설치. 나는 같은 문제가 있었다 : 루트 사용자에 대한 로그인이 거부되었습니다.

아래 단계를 시도했습니다.

  1. dpkg --get-selections | grep mysql (mysql 버전을 얻으려면).

  2. dpkg-reconfigure mysql-server-5.7

  3. mysql -u root -p

-p가 없으면 암호를 묻는 메시지가 표시되지 않습니다. 로그인 한 후 다음 단계에 따라 비밀번호를 사용하여 사용자를 작성할 수 있습니다.

CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';

GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;

루트에서 나가서 위에서 제공 한 것에서 로그인하십시오.

mysql -u <your_new_username> -p

어떤 이유로 든 여전히 mysql을 입력해도 작동하지 않습니다. 조금도. 나는 그것을 사용하는 습관을 만드는 것이 좋습니다mysql -u <name> -p .


8

그냥 터미널을 입력

mysql -u 루트 -p. 그것은 당신에게 암호를 요청할 것보다


8

다른 답변이 귀하에게 도움이되지 않으면 다음 오류가 표시됩니다.

mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
[1]+  Exit 1                  sudo mysqld_safe --skip-grant-tables

비밀번호를 재설정 할 때까지 아래 명령을 단계별로 수행하십시오.

# Stop Your Server First
sudo service mysql stop

# Make MySQL service directory.
sudo mkdir /var/run/mysqld

# Give MySQL permission to work with the created directory
sudo chown mysql: /var/run/mysqld

# Start MySQL, without permission and network checking
sudo mysqld_safe --skip-grant-tables --skip-networking &

# Log in to your server without any password.
mysql -u root mysql


# Update the password for the root user:
UPDATE mysql.user SET authentication_string=PASSWORD('YourNewPasswordBuddy'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';

#if you omit (AND Host='localhost') section, it updates the root pass regardless of its host

FLUSH PRIVILEGES;
EXIT;

#kill mysqld_safe process
sudo service mysql restart

#Now you can use your new password to login to your Server
mysql -u root -p

#take note for remote access you should create a remote user and then grant all privileges to that remote user

이것은 Ubuntu 18.04 LTS의 mysql 5.7에 대한 정답입니다. 감사합니다
Dhiraj

모든 원격 주소 : sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf-> bind-address = 0.0.0.0
Mehdi

7

MySQL을 루트 사용자 ( $SUDO) 로 설치 하고 동일한 문제
가 발생했습니다.

  1. $ sudo cat /etc/mysql/debian.cnf

세부 사항이 다음과 같이 표시됩니다.

# Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock

위 의 프롬프트에서 비밀번호를 사용할(GUx0RblkD3sPhHL5) 것입니다.

  1. mysql -u debian-sys-maint -p Enter password:
    이제 비밀번호 ( GUx0RblkD3sPhHL5 )를 제공하십시오 .

  2. 이제 exitMySQL에서 다음과 같이 다시 로그인하십시오.

    mysql -u root -p Enter password:
    이제 새 비밀번호를 제공하십시오. 그게 다야, 우리는 나중에 사용할 수 있도록 새로운 암호를 가지고 있습니다.

그것은 나를 위해 일했다, 당신도 도와주세요!


6

공식 문서를 읽으십시오 : MySQL : 루트 암호를 재설정하는 방법

터미널에 액세스 할 수있는 경우 :

MySQL 5.7.6 이상 :

$ mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5 이하 :

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

1
제공 : ERROR 1131 (42000) : MySQL을 익명 사용자로 사용하고 있으며 익명 사용자는 암호를 변경할 수 없습니다
MD. Mohiuddin Ahmed

1
정상입니다. 귀하의 사용자는 익명입니다. 당신은 실행해야> mysql -u {your_username}
d.danailov

3

Mac OSX에서 mysql-5.7.12-osx10.11-x86_64.dmg를 사용하고 있습니다.

설치 프로세스는 루트 사용자의 임시 비밀번호를 자동으로 설정합니다. 비밀번호를 저장해야합니다. 비밀번호를 복구 할 수 없습니다.

지시를 따르십시오

  1. 이동 cd /usr/local/mysql/bin/
  2. 임시 비밀번호를 입력하십시오 ( "tsO07JF1 => 3"과 유사 함).
  3. mysql> 프롬프트가 나타납니다.
  4. SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}');"root"암호를 설정하려면 다음 명령을 실행하십시오 :SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
  5. 운영 ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
  6. 운영 exit
  7. 운영 ./mysql -u root -p
  8. 비밀번호를 입력하십시오. 제 경우에는 "root"(따옴표없이)를 입력합니다
  9. 그게 다야.

편의상 "/usr/local/mysql/bin"PATH에 추가 해야합니다.

이제 어디서나 타이핑 할 수 있습니다 ./mysql -u root -p 암호를 입력하고 입력하면 mysql> 프롬프트가 표시됩니다.

도움이 되길 바랍니다.


3

대답은 어리석게 들릴지 모르지만 몇 시간을 낭비한 후에 이것이 내가 작동하는 방식

mysql -u root -p

오류 메시지가 나타납니다

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

올바른 비밀번호를 입력했지만 (mysql을 처음 설치할 때 얻는 임시 비밀번호)

나는이 때 바로 그것을 가지고 암호 프롬프트가 깜빡 할 때 비밀번호를 입력


2

문제가 여전히 존재하면 패스를 강제로 변경하십시오.

MySQL 서버 중지 (Linux) :

/etc/init.d/mysql stop

Mac OS X에서 MySQL 서버 중지 :

mysql.server stop

--skip-grant-tables를 사용하여 mysqld_safe 데몬을 시작하십시오

mysqld_safe --skip-grant-tables &
mysql -u root

새로운 MySQL 루트 사용자 비밀번호 설정

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

MySQL 서버 중지 (Linux) :

/etc/init.d/mysql stop

Mac OS X에서 MySQL 서버 중지 :

mysql.server stop

MySQL 서버 서비스를 시작하고 루트로 로그인 테스트

mysql -u root -p

1

BY 기본 비밀번호는 null이므로 아래 단계를 수행하여 비밀번호를 변경해야합니다.

mysql에 연결

루트 # mysql

mysql 사용

mysql> 사용자 설정 업데이트 password = PASSWORD ( 'root') 여기서 User = 'root'; 마지막으로 권한을 다시로드하십시오.

mysql> 플러시 권한; mysql> 종료



1

우분투 16.04 (MySQL 버전 5.7.13)에서 아래 단계로 문제를 해결할 수있었습니다.

  1. 섹션 B.5.3.2.2 루트 비밀번호 재설정 : Unix 및 Unix-Like Systems MySQL 5.7 참조 ​​매뉴얼 의 지침을 따르십시오.

  2. #sudo mysqld_safe --init-file = / home / me / mysql-init를 시도했을 때 실패했습니다. 오류는 /var/log/mysql/error.log에있었습니다.

    2016-08-10T11 : 41 : 20.421946Z 0 [참고] init_file '/ home / me / mysql / mysql-init'의 실행이 시작되었습니다. 2016-08-10T11 : 41 : 20.422070Z 0 [오류] / usr / sbin / mysqld : 파일 '/ home / me / mysql / mysql-init'를 찾을 수 없음 (오류 코드 : 13-권한 거부) 2016-08-10T11 : 41 : 20.422096Z 0 [오류] 중단

mysql-init의 파일 권한이 문제가 아니 었습니다. apparmor 권한을 편집해야합니다.

  1. #sudo vi /etc/apparmor.d/usr.sbin.mysqld로 편집

    ....
      /var/log/mysql/ r,
      /var/log/mysql/** rw,
    
    
    # Allow user init file
      /home/pranab/mysql/* r,
    
      # Site-specific additions and overrides. See local/README for details.
      #include <local/usr.sbin.mysqld>
    }
  2. #sudo /etc/init.d/apparmor reload를 수행하십시오

  3. mysqld_safe를 다시 시작하여 위의 2 단계를 시도하십시오. /var/log/mysql/error.log를 점검하여 오류가없고 mysqld가 성공적으로 시작되었는지 확인하십시오

  4. #mysql -u root -p를 실행하십시오.

    암호를 입력:

mysql-init에 지정한 비밀번호를 입력하십시오. 지금 루트로 로그인 할 수 있어야합니다.

  1. #sudo mysqladmin -u root -p shutdown에 의한 mysqld_safe 종료

  2. #sudo systemctl start mysql으로 mysqld를 정상적으로 시작하십시오.


1

Docker 이미지 (예 : 포트 6606)의 일부로 MySQL이 있고 포트를 지정하는 Ubuntu 설치 (포트 3306)가 충분하지 않은 경우 :

mysql -u root -p -P 6606

던질 것입니다 :

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

로컬 호스트에 연결하려고 할 때 로컬 IP를 지정하면 문제가 해결됩니다.

mysql -u root -p -P 6606 -h 127.0.0.1

0

최근의 MySQL 버전에는 존재하지 passwordmysql.user테이블.

따라서을 실행해야합니다 ALTER USER. 이 한 줄 명령을 파일에 넣으십시오.

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

그리고 init 파일로 실행하십시오 (루트 또는 mysql 사용자로)

mysqld_safe --init-file=/home/me/mysql-init &

시작하려면 MySQL 서버를 중지해야합니다 mysqld_safe.

또한이 init 파일을로드하는 apparmor 권한에 문제가있을 수 있습니다. https://blogs.oracle.com/jsmyth/entry/apparmor_and_mysql에서 자세히 알아 보십시오.


0

아직 비밀번호를 설정하지 않았다면 run을 실행 mysql -uroot하십시오.


0

Mac에서 설치시 제공 한 첫 번째 비밀번호로 로그인하는 데 문제가있는 경우 간단히 mysql 프로세스를 종료 한 다음 시도해보십시오.

따라서 1- 다음 명령을 실행하여 mysql의 PID를 찾으십시오.

ps -aef | grep mysql | grep -v grep

2- 프로세스를 종료하십시오.

kill -15 [process id] 

그런 다음이 명령을 사용하여 초기 비밀번호로 로그인 할 수 있습니다.

mysql -uroot -p

비밀번호를 입력하라는 메시지가 표시됩니다. 초기 비밀번호 만 입력하십시오.


0

비슷한 문제가있었습니다.

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

그러나 제 경우에는 원인이 실제로 어리 석었습니다. Word 문서에서 명령을 복사했는데 문제는 하이픈에 ASCII 2D 코드가없고 유니 코드 E28093이 있다는 것입니다.

잘못된 방법:

mysql -u root pxxxx

올바른 방법 :

mysql -u root -pxxxx

둘 다 동일하지만 동일하지 않습니다 (암호를 바꾸어 복사하여 붙여 넣기하십시오).

이러한 유형의 오류가 발생하면 복사 및 붙여 넣기 대신 명령을 입력하는 것이 좋습니다.


0

@Lahiru의 정답으로 시도했지만 macOS Mojave의 MySQL 서버 버전 8.0.16 (커뮤니티)에서는 작동하지 않았습니다.

위의 Sameer Choudhary의 지침에 따라 약간의 조정으로 root 암호를 변경하고 localhost에서 루트 액세스를 활성화 할 수있었습니다.

업데이트 : homebrew를 사용하여 Mac OS에 설치하는 경우 "brew install mysql"이 필요하지 않습니다.


0

Ubuntu 18.04 LTS 및 Mysql Server 버전 5.7.27-0ubuntu0.18.04.1 (Ubuntu) 에서이 문제가 발생했습니다.

내 솔루션은 (로 루트 로 실행 sudo -i)

mysql <<-EOSQL
  use mysql;
  update user set plugin="mysql_native_password" where User='root';
  FLUSH PRIVILEGES ;
EOSQL

mysqladmin -u root password new_pw

0

나는 또한 같은 문제를 겪었습니다.

1) cmd를 엽니 다

2) C : \ Program Files \ MySQL \ MySQL Server 8.0 \ bin>으로 이동합니다 (MySQL Server 8.0은 설치 한 서버에 따라 다를 수 있음)

3) 다음 명령 mysql -u root -p를 넣습니다.

4) 암호를 입력하라는 메시지가 표시됩니다. 설치하는 동안 입력 한 암호가 공백으로 변경되어 Enter 키를 누르기 만하면됩니다.

지금 당신은 단순히 데이터베이스에 액세스 할 수 있습니다

이 솔루션은 Windows 플랫폼에서 저에게 효과적이었습니다.


0

최고 답변 (w / mysqladmin)은 mac 10.15에서 작동했지만 우분투에서는 작동하지 않았습니다. 그런 다음 mysql의 안전 시작을 포함하여 다른 많은 옵션을 시도했지만 아무것도 작동하지 않았습니다. 따라서 새로운 응답을 추가합니다.

적어도 나는 5.7.28-0ubuntu0.18.04.4대답이 부족한 버전 이었다 IDENTIFIED WITH mysql_native_password. 5.7.28은 현재 LTS의 기본값이므로 대부분의 새 시스템의 기본값이어야합니다 (20.04 LTS가 나올 때까지).

찾았 https://www.digitalocean.com/community/questions/can-t-set-root-password-mysql-server 지금 적용

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';

작동합니다.


0

내가 직면 한 오류는

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

포트가 작동하는 데 문제가있었습니다.

기본적으로 mysql은 port 3306 .

당신은 그것을 실행하여 확인할 수 있습니다

  • 32 비트 시스템에서 :

    sudo /opt/lampp/manager-linux.run

  • 64 비트 시스템에서 :

    sudo /opt/lampp/manager-linux-x64.run

configure버튼을 클릭하십시오

xampp 제어판

내 경우에는 포트가 3307에서 실행 중이었고 내가 사용한 명령은

mysql -u root -p -P 3307 -h 127.0.0.1

0

내 경우에는 컨테이너에 명령. 이 경우 첫 단어 만 해석되었습니다. 실행 중이 아닌지 확인하십시오.

mysql

반대로 :

mysql -uroot -ppassword schemaname

아마도 인용을 시도하십시오 :

'mysql -uroot -ppassword schemaname'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.