MariaDB 루트 사용자에 대해 암호 및 unix_socket 인증을 사용하도록 설정하시겠습니까?
Ubuntu 16.04의 MariaDB에 루트 사용자가 있습니다.
디폴트로는 루트 사용자는 에 의해 인증됩니다.unix_socket
인증 플러그인
인증 방식을 패스워드 방식으로 전환할 수 있습니다.
update mysql.user set plugin='' where user='root';
이거 잘 돼.그렇지만.....
root 사용자를 unix_socket(root shell에 의해) 또는 패스워드(localhost:3306에 의해 접속되어 있는 경우)로 인증할 수 있습니까?
신뢰할 수 있고 간단한 방법은 다른 슈퍼 사용자를 생성하여 비밀번호로 연결할 때 사용하는 것입니다.
CREATE USER admin@localhost IDENTIFIED BY 'password';
GRANT ALL ON *.* TO admin@localhost WITH GRANT OPTION;
-- etc
MariaDb/MySQL은 다음과 같이 'localhost'(unix socket)가 '127.0.0.1'(tcp socket)과 다르다고 간주하므로 TCP에는 암호를 설정하고 Unix 소켓에는 암호를 설정하지 않을 수 있습니다.
마리아 데이터베이스:
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
INSTALL SONAME 'auth_socket';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION;
MySQL/Percona:
CREATE USER 'admin'@'127.0.0.1' IDENTIFIED BY 'xxx';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1' WITH GRANT OPTION;
INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';
CREATE USER 'admin'@'localhost' IDENTIFIED WITH auth_socket;
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
다음으로 로컬호스트에 로그인 할 수 있습니다.mysql -u admin
unix 소켓 또는 tcp 소켓을 통한 패스워드 없음mysql -h 127.0.0.1 -u admin -p
.
예 - MariaDB 10.4(2019년 6월* 출시) 이후 키워드를 사용하여 다음과 같은 몇 가지 인증 방법을 모두 사용할 수 있습니다.
CREATE OR ALTER USER `minecraft`
IDENTIFIED VIA unix_socket
OR mysql_native_password USING PASSWORD("s3cr3tpasswvrd");
https://mariadb.com/kb/en/pluggable-authentication-overview/ #sql-displays
*Even지만 OS공급 업체일 수 있slow-on-the-draw, 또는 심지어 완전히 업데이트를 제공하려고 하는군, MariaDB 공식 보고한 분포를 나타낼 나이로 우분투 14.04, CentOS &으로 최소 이 버전을 제공하는;RHEL 6,7데비안, 페도라 28(각각은 상승할 수도 현재 출시), 비록 몇몇 이들의(예를 들어 페도라<>32)당신은 못을 제공한다.어두워져서 가지고 있를 사용하여 URL 버전을 수동으로 변경합니다.
root 사용자를 unix_socket(root shell에 의해) 또는 패스워드(localhost:3306에 의해 접속되어 있는 경우)로 인증할 수 있습니까?
의 목적auth_socket
MySQL 또는unix_socket
MariaDB에서는 검증된 로컬 사용자만 서버에 접속할 수 있는 Unix 소켓에 대한 패스워드 인증을 비활성화합니다.
즉, 같은 유저/호스트에 복수의 인증 플러그인을 설정할 수 없습니다.다만, 다른 사람들이 지적한 것과 같이, 일반적인 회피책은, 다른 유저명(같은 유저명)에 관련 붙여진 추가의 유저를 작성하는 것입니다.host
을 사용하다
@와 같이 @ColinM은localhost
에서는 소켓을 만, 「」는 「소켓」으로 되어 있습니다.127.0.0.1
는 IP 주소(TCP 프로토콜 등)이기 때문에 본질적으로 비소켓입니다.
mysql -e "CREATE USER IF NOT EXISTS 'root'@'localhost' IDENTIFIED WITH auth_socket;"
mysql -e "CREATE USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY '@DB_PASSWORD_ROOT';"
mysql -e "CREATE USER 'root'@'::1' IDENTIFIED WITH mysql_native_password BY '@DB_PASSWORD_ROOT';"
「 」를 확실히 하기 .auth_socket
에 행을 계속 추가합니다.my.cnf
:
plugin-load-add = auth_socket.so
auth_socket = FORCE_PLUS_PERMANENT
등의 관리 "phpMyAdmin" 관리자admin@127.0.0.1
, 패스워드 플러그인이 「」라고 하는 합니다.caching_sha2_password
애플리케이션(/SSL, 공유메모리를 않은 .
10.4를 실행할 수 .GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED WITH unix_socket WITH GRANT OPTION;
~로unix_socket
는 디폴트로 켜져 있습니다.스도
편집: @colinM에서 설명한 바와 같이, 이 방법을 사용하는 경우, 나는 그가 말한 대로 이 방법을 사용하는 경우 소켓 파일 권한을 보호하십시오.
또는 단순히 mysql - u 사용자 -pYouPassword -e < printf 'INSERT INTO 'tablename' ('id', 'day', 'time', '랭크') 값(NULL, '${id}', '${time}', '${time}', 'NULL'); DB_NAME)을 선택합니다.
언급URL : https://stackoverflow.com/questions/41846000/enable-password-and-unix-socket-authentication-for-mariadb-root-user
'programing' 카테고리의 다른 글
MySQL은 단일 행에서와 같이 최소 열과 최대 열에 대해 일치하는 행을 가져옵니다. (0) | 2022.09.14 |
---|---|
보기에 대한 외부 키 만들기 (0) | 2022.09.14 |
Internet Explorer 브라우저용 JavaScript에서 Array indexOf()를 수정하는 방법 (0) | 2022.09.14 |
오프셋이란높이, 클라이언트높이, 스크롤 높이? (0) | 2022.09.13 |
각 루프에 대해 JavaScript에서 "다음" 반복으로 이동합니다. (0) | 2022.09.13 |