IT

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

lottoking 2020. 9. 4. 07:43
반응형

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


오늘은 Ubuntu 14.04.1 LTS ll에 루트로 로그인했습니다.

그런 다음 apt-get install mariadb-server(sudo없이 루트로).

mySQL -h localhost -u root --password=<PW>내가 가진

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

mySQL -u root -p나는 DB에 로그인했다

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<PW>';
FLUSH ALL PRIVILEGES;

그러나 이것은 도움이되지 않습니다. 어떤 유전자가 있습니까? 설문 질문에 대한 답을 놓쳤습니다.


TL; DR은 : 새로운 설치 한 후 루트 사용자로 후 mysql을 / mariadb의 액세스 최신 버전에, 당신이 루트 쉘에 있어야합니다 (즉 sudo mysql -u root, 나 mysql -u root에 의해 시작 쉘 내부 su -또는 sudo -i첫번째)


동일한 업그레이드를 방금 수행 한 Ubuntu에서 동일한 문제가 발생했습니다.

이상한 점은

sudo /usr/bin/mysql_secure_installation

비밀번호를 수락 내하고 설정할 수 있지만 클라이언트 root통해 로그인 할 수 없습니다.mysql

나는 mariadb를 시작해야했다

sudo mysqld_safe --skip-grant-tables

다른 모든 사용자는 여전히 액세스 할 수 있습니다.

mysql.user테이블을 보면 루트에 대해 plugin열이 반면 unix_socket다른 모든 사용자는 'mysql_native_password'로 설정되어 있음을 알았습니다. 이 페이지를 간략히 살펴 봤습니다 : https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ 은 Unix 소켓 uid이 클라이언트를 실행하는 프로세스를 사용자의 프로세스와 일치 시켜 로그인을 가능하게 설명합니다. . mysql.user표. root, 루트로 로그인해야하는 경우 mariadb에 액세스 합니다.

인증이 필요한 mariadb 데몬을 충분히 다시 시작하려는 다음을 사용하여 루트로 로그인 할 수 있습니다.

sudo mysql -u root -p

또는

sudo su -
mysql -u root -p

이 작업을 수행 한 후 sudo를 수행하지 않고 액세스하는 방법에 대해 생각했습니다. 이것은 mysql 쿼리를 실행하는 문제입니다.

GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;

( <password>원하는 mysql 루트 비밀번호로 대체 ). 이 루트 사용자에 대한 암호 로그인을 활성화했습니다.

또는 mysql 쿼리를 실행합니다.

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;

비밀번호를 변경하지 않고 비밀번호 로그인을 사용하도록 권장합니다. 루트 계정을 변경하지만 루트 비밀번호가없는 mysql / mariadb 설치가 남을 수 있습니다.

다음 중 하나를 수행 한 후 mysql / mariadb를 다시 시작해야합니다.

sudo service mysql restart

그리고 짜잔을 통해 내 개인 계정에서 액세스했습니다. mysql -u root -p

이렇게 하면 보안있습니다. 아마도 MariaDB 개발자는 그런 짓한 이와 같은 루트 액세스 작업을 선택했습니다.

대해 생각하면서 그것에 나는 sudo mysql -u root -p그렇게 할 수 있어서 매우 기쁘기 때문에 다시 전환하고 있지만 다른 곳에서 찾을 수 없으므로 내 솔루션을 게시 할 것이라고 생각했습니다.


Ubuntu 16.04 LTS에서 localhost의 MariaDB 루트 로그인이 암호 스타일에서 sudo 로그인 스타일로 변경되었습니다.

그래서 그냥 해

sudo mysql -u root

비밀번호로 로그인하고 싶기 때문에 다른 사용자 '사용자'를 만듭니다.

MariaDB 콘솔에서 ... ( 'sudo mysql -u root'로 MariaDB 콘솔에 들어갑니다)

use mysql
CREATE USER 'user'@'localhost' IDENTIFIED BY 'yourpassword';
\q

그런 다음 bash 쉘 프롬프트에서

mysql-workbench

그리고 localhost에서 'yourpassword'로 'user'로 로그인 할 수 있습니다.


명령을 시도하십시오

sudo mysql_secure_installation

를 누르고 입력 mysql을 / mariadb루트, 대한 새 암호를 할당합니다 .

다음과 같은 오류가 발생하면

오류 2002 (HY000) : '/var/run/mysqld/mysqld.sock'소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다.

서비스 활성화

service mysql start

지금 다시 들어가면

mysql -u root -p

문제를 따르는 경우에 입력 sudo su하고 mysql -u root -p지금 권한 적용 루트를

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<password>';

이것은 MariaDB의 문제를 해결했습니다 .

행운을 빕니다


Mariadb에 루트로 액세스하려면 Ubuntu에 루트로 로그인해야했습니다. 처음 설치할 때 수행하라는 메시지 인 "Harden ..."과 관련이있을 수 있습니다. 그래서:

$ sudo su
[sudo] password for user: yourubunturootpassword
# mysql -r root -p
Enter password: yourmariadbrootpassword

그리고 당신은 안으로.


나는 한때 비슷한 문제가 있었다. 제 경우에는 MySQL 서버의 사용자 테이블이 어떻게 든 손상 되었기 때문에 발생했습니다.

이 기사가 도움이되었습니다 : mysql-how-to-fix-Access-denied-for-user-'root '@'localhost '

기본적으로 루트 사용자를 재설정해야합니다.


권한을 플러시하는 새로운 명령은 다음과 같습니다.

FLUSH PRIVILEGES

이전 명령 FLUSH ALL PRIVILEGES은 더 이상 작동하지 않습니다.

다음과 같은 오류가 발생합니다.

MariaDB [(none)]> FLUSH ALL PRIVILEGES; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ALL PRIVILEGES' at line 1

도움이 되었기를 바랍니다 :)


mysql_upgrade를 실행합니다.

확인

SHOW GRANTS FOR 'root'@'localhost';

말한다

GRANT ALL PRIVILEGES ON ... WITH GRANT OPTION 

테이블이 _mysql.proxies_priv_ 존재하는지 확인하십시오.

권한 부여를 시도하는 동안 사용자 'root'@ 'localhost'에 대한 액세스가 거부되었습니다. 권한을 어떻게 부여합니까?


Ubuntu와 같은 시스템은 auth_socket 플러그인 을 사용하는 것을 선호합니다 . DB에있는 사용자 이름과 mysql 요청을하는 프로세스를 비교하여 인증을 시도합니다. 여기에 설명되어 있습니다.

소켓 플러그인은 소켓 사용자 이름 (운영 체제 사용자 이름)이 클라이언트 프로그램에서 서버에 지정한 MySQL 사용자 이름과 일치하는지 확인하고 이름이 일치하는 경우에만 연결을 허용합니다.

대신 mysql_native_password를 사용하여 되돌릴 수 있으며 , 인증하려면 사용자 / 암호가 필요합니다.

이를 달성하는 방법에 대해서는 대신 이것을 권장 합니다 .


수퍼 유저 수락 답변에서 :

sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;

sudo를 사용하면 작동합니다.

sudo mysql_secure_installation

참고 URL : https://stackoverflow.com/questions/28068155/access-denied-for-user-rootlocalhost-using-password-yes-after-new-instal

반응형