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
'source' 카테고리의 다른 글
파일에서 텍스트를 검색하고 바꾸려면 어떻게 해야 합니까? (0) | 2022.09.18 |
---|---|
VueX의 여러 스토어 어레이에서 일치하는 항목 검색 (0) | 2022.09.18 |
시리얼라이제이션 중에 @JsonIgnore만 사용하고, 시리얼라이제이션 해제하지 않음 (0) | 2022.09.18 |
vuex 저장소에 대한 유형 정의 확장 또는 재정의 (0) | 2022.09.18 |
MariaDb/Mysql에서 NVARCHAR 열을 생성할 수 없습니다. (0) | 2022.09.18 |