programing tip

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

itbloger 2020. 6. 10. 22:40
반응형

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


나는 주로 프로그래밍 대신 전력 시스템을 가지고 노는 전기 엔지니어입니다. 최근에는 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)

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


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

MySQL <5.7의 경우 :

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

mysql -u root

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

mysqladmin -u root password [newpassword]

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


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

sudo dpkg-reconfigure mysql-server-5.5

루트 암호가 변경됩니다.


비밀번호를 재설정해야합니다! 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'입니다.


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

/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

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

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

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

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

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

shell> mysql -uroot -p 

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

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

mysql -u root -p 

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

Enter password: 

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


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

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

  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
    

나는이 매우 성가신 문제를 발견하고 작동하지 않는 많은 답변을 발견했습니다. 내가 만난 가장 좋은 해결책은 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


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.


공식 문서를 읽으십시오 : 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');

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

  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:
    이제 새 비밀번호를 제공하십시오. 그게 다야, 우리는 나중에 사용할 수 있도록 새로운 암호를 가지고 있습니다.

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


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> 프롬프트가 표시됩니다.

도움이 되길 바랍니다.


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

mysql -u root -p

오류 메시지가 나타납니다

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

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

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


if the problem still exists try to force changing the pass

Stop MySQL Server (on Linux):

/etc/init.d/mysql stop

Stop MySQL Server (on Mac OS X):

mysql.server stop

Start mysqld_safe daemon with --skip-grant-tables

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

Setup new MySQL root user password

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

Stop MySQL Server (on Linux):

/etc/init.d/mysql stop

Stop MySQL Server (on Mac OS X):

mysql.server stop

Start MySQL server service and test to login by root:

mysql -u root -p

just enter the terminal

mysql -u root -p . than it will ask password to you


Just one line and it solved my issue.

sudo dpkg-reconfigure mysql-server-5.5

In Ubuntu 16.04 (MySQL version 5.7.13) I was able to resolve the problem with the steps below:

  1. Follow the instructions from the in section B.5.3.2.2 Resetting the Root Password: Unix and Unix-Like Systems MySQL 5.7 reference manual

  2. When I tried #sudo mysqld_safe --init-file=/home/me/mysql-init & it failed. The error was in /var/log/mysql/error.log

    2016-08-10T11:41:20.421946Z 0 [Note] Execution of init_file '/home/me/mysql/mysql-init' started. 2016-08-10T11:41:20.422070Z 0 [ERROR] /usr/sbin/mysqld: File '/home/me/mysql/mysql-init' not found (Errcode: 13 - Permission denied) 2016-08-10T11:41:20.422096Z 0 [ERROR] Aborting

The file permission of mysql-init was not the problem, need to edit apparmor permission

  1. Edit by #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. Do #sudo /etc/init.d/apparmor reload

  3. Start mysqld_safe again try step 2 above. Check /var/log/mysql/error.log make sure there is no error and the mysqld is successfully started

  4. Run #mysql -u root -p

    Enter password:

Enter the password that you specified in mysql-init. You should be able to log in as root now.

  1. Shutdown mysqld_safe by #sudo mysqladmin -u root -p shutdown

  2. Start mysqld normal way by #sudo systemctl start mysql


This is going to work if you are entering the commands being said in the other answers but you still get this errors:

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

Follow the below commands step by step until you reset your password:

# 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 -uroot 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;

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

BY default password will be null, so you have to change password by doing below steps.

connect to mysql

root# mysql

Use mysql

mysql> update user set password=PASSWORD('root') where User='root'; Finally, reload the privileges:

mysql> flush privileges; mysql> quit


In recent MySQL versions there is no password in mysql.user table.

So you need to execute ALTER USER. Put this one line command into the file.

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

And execute it as init file (as root or mysql user)

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

MySQL server need to be stopped to start mysqld_safe.

Also, there may be a problem with apparmor permissions to load this init file. Read more here https://blogs.oracle.com/jsmyth/entry/apparmor_and_mysql


If you haven't set password yet, then run mysql -uroot, it works for me.


On Mac, If you have a problem in logging in with the first password you were given in installation, maybe you can just simply kill the mysql process and then try.

So: 1- run the following command to find the PID of mysql:

ps -aef | grep mysql | grep -v grep

2- kill the process:

kill -15 [process id] 

Then you can login with the initial password using this command:

mysql -uroot -p

Which ask you to enter your password. Just enter the initial password.


I had a similar issue:

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

But in my case, the cause was really silly. I copied the command from a Word document, and the problem was that an hyphen did not have the ASCII 2D code but the Unicode E28093.

Wrong way:

mysql -u root –pxxxx

Right way:

mysql -u root -pxxxx

Both look the same but aren't the same (try it, copy and paste replacing your password).

Faced with this type of error, the recommendation is to try typing the command instead of copying and pasting.


I tried with the correct answer by @Lahiru, but did not work with MySQL server version 8.0.16 (Community) on macOS Mojave.

Followed the instructions by Sameer Choudhary above and with some adjustments, I was able to change root password and enable root access from localhost.

Update: All of these are not required, if you are installing on Mac OS using homebrew: "brew install mysql"


I had this problem with Ubuntu 18.04 LTS and Mysql Server version 5.7.27-0ubuntu0.18.04.1 (Ubuntu).

My solution was (running as root with 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

참고URL : https://stackoverflow.com/questions/21944936/error-1045-28000-access-denied-for-user-rootlocalhost-using-password-y

반응형