source

MariaDB - 루트로 로그인할 수 없습니다.

goodcode 2022. 9. 18. 21:34
반응형

MariaDB - 루트로 로그인할 수 없습니다.

Ubuntu(16.04.02)에서 MariaDB(10.0.29)를 셋업하려고 합니다.인스톨 해 프로세스를 개시한 후(sudo service mysql start) 로 로그인할 수 없습니다.root비밀번호를 공백으로 설정했는데도 말이죠.

mysql -u root접근을 거부합니다.를 통해 로그인했습니다.sudo mysql사용자 테이블을 확인했습니다. select user, password, authentication_string from mysql.user예상대로:

+---------+----------+-----------------------+ 
| User    | password | authentication_string |
+---------+----------+-----------------------+
| root    |          |                       |
+---------+----------+-----------------------+

새로운 유저도 작성했습니다. create user 'test'@'localhost' identified by '';그리고 내가 하려고 할 때mysql -u test(빈 패스워드), 정상적으로 동작해, 로그인 합니다.

사용자 테이블은 다음과 같습니다.

+---------+----------+-----------------------+
| User    | password | authentication_string |
+---------+----------+-----------------------+
| root    |          |                       |
| test    |          |                       |
+---------+----------+-----------------------+

그럼 왜 로그인을 할 수 없는 건지 누구라도 말씀해 주시겠어요?root비밀번호는 비어있지만 로그인 할 수 있습니다.test?

기본 MariaDB 패키지(MariaDB 자체에서 제공되는 패키지)와 달리 Ubuntu에 의해 생성된 패키지는 기본적으로 로컬 루트에 대한 unix_socket 인증을 가집니다.확인하려면, 실행

SELECT user, host, plugin FROM mysql.user;

보시면unix_socket에서plugin칼럼, 그게 이유야.

일반 비밀번호 인증으로 돌아가려면

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

(선택)WHERE목적에 맞는 조항입니다.위의 조항은 예시일 뿐입니다.)

이 문제는 MariaDB 10.4의 인증시스템 변경에 의한 것입니다.

위의 변경으로 인해 open-for-everyone all-power root 계정은 완전히 사라졌습니다.(...) 루트 계정은 자동으로 안전하게 생성됩니다.CREATE USER root@localhost Identifiered VIA UNIX_socket 또는 mysql_native_password가 'invalid'를 사용하여 생성됩니다.

DB에 액세스하려면 CLI를 사용하여 로그인해야 합니다.mariadb -p및 실행:

ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("your-password-here");

출처 : https://mariadb.com/kb/en/library/authentication-from-mariadb-104/ #사용자 계정에서 이전 인증으로 변경

다른 솔루션에 대해서: MariaDB도 업데이트를 허용하지 않기 때문에 동작하지 않습니다.plugin열:ERROR 1348 (HY000): Column 'plugin' is not updatable.~


업데이트 2020: 위의 솔루션이 작동하지만 기본 루트를 대체합니다.unix_socket패스워드에 의한 인증.이로 인해 mariadb 업그레이드 / 자체 유지보수 스크립트 등의 작업이 중단되어 root로 실행할 때 추가 비밀번호 없이 DB에 연결할 수 있게 되었습니다.

다음과 같이 새 루트 로그인을 추가하는 것이 좋습니다.

CREATE USER `root`@`%` IDENTIFIED WITH mysql_native_password using PASSWORD('your-password-here');
GRANT ALL PRIVILEGES ON *.* TO `root`@`%` WITH GRANT OPTION;
FLUSH PRIVILEGES;

이렇게 하면 루트 로그인의 기본 동작을 허용하고 암호를 사용하여 DB에 외부 액세스를 추가할 수 있습니다.

나는 한동안 이것과 씨름했다.Ubuntu에는 기본적으로 MariaDB(10.0.31)가 포함되어 있습니다.여러 번 재설치하고 플러그인을 여러 가지 제안으로 변경해도 mysql에 제대로 로그인 할 수 없었습니다.

마지막으로 repo:https://downloads.mariadb.org/mariadb/repositories/에서 최신 MariaDB(10.2.12)를 설치했습니다.

저는 바로 로그인 할 수 있었습니다.

언급URL : https://stackoverflow.com/questions/43379892/mariadb-cannot-login-as-root

반응형