[mysql] 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

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

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

Enter를 누르고 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의 내 문제를 해결했습니다 .

행운을 빕니다


답변

수퍼 유저 수락 답변에서 :

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


답변

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

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

그리고 당신은 안으로.


답변

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

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’에 대한 액세스가 거부되었습니다. 권한을 어떻게 부여합니까?